首页 > 解决方案 > 如何在底部导航中保存片段状态

问题描述

我知道其他人已经问过这个问题,但我找不到任何人来帮助自己。我有一个包含三个片段的底部导航视图。

当我导航出这个底部导航所在的活动时,我希望能够将最后访问的片段保存在底部导航中,并在返回时恢复它。

目前,这是使用 完成的bottomNav.selectedItemId,但是没有伴随片段更改。它恢复了一个空白屏幕,除了我导航到底部导航中的另一个片段并返回。如何使用当前数据恢复片段?


    val title: String by lazy {
        getName()
    }
    val profileName by lazy {
        profile_drawer_view.findViewById<TextView>(R.id.profile_name)
    }

    //    Get logged-in user
    private val currentUser: User? by lazy {
        authViewModel.currentUser
    }

    private val header by lazy {
        authViewModel.header
    }


    @Inject
    lateinit var viewModelProviderFactory: ViewModelFactory
    private val authViewModel: AuthViewModel by lazy {
        ViewModelProvider(this, viewModelProviderFactory).get(AuthViewModel::class.java)
    }


    val checkConnectionTv by lazy{
        dialog.findViewById<TextView>(R.id.loader_layout_tv)
    }

    lateinit var navController:NavController

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_dashboard)
        changeStatusBarColor(R.color.colorWhite)
        i(title, "Oncreate")

        navController = Navigation.findNavController(this, R.id.dashboard_fragment)

        bottomNav.setupWithNavController(navController)

//

    

    }


    private fun logoutRequest() {
        authViewModel.logout(this)
    }


    override fun onStart() {
        super.onStart()
        bottomNav.selectedItemId = authViewModel.lastFragmentId
        Log.i(title, "onStart")
    }


    override fun onPause() {
        super.onPause()
        authViewModel.lastFragmentId = bottomNav.selectedItemId
    }

    override fun onRestart() {
        super.onRestart()
        i(title, "Restart")
    }

    override fun onDestroy() {
        super.onDestroy()
        i(title, "onDestroy")

    }

}

标签: javaandroidkotlin

解决方案


我想我忘了提到我正在使用带有底部导航的导航组件。

我能够保存和恢复使用导航控制器访问的最后一个片段

navController.navigate(authViewModel.lastFragmentId ?: R.id.profileFragment)

推荐阅读