【发布时间】:2020-02-05 11:01:42
【问题描述】:
我有 2 个navigation 文件,在我的Activity 中,有2 个fragments。其中一个导航始终显示在其中一个片段中,但我仅在需要时才显示另一个。
它们的绘制方式是始终显示的片段位于 relativeLayout 内,而另一个片段位于同一 relativeLayout 内,其 visibility 设置为 gone。当我需要第二次导航时,我将可见性设置为visible,当我不需要它时,我再次将其设置为gone。视觉上这很好用,但我想要完成的是当我不需要它时不想要第二次导航,我想完全杀死它并在下次需要时重新绘制它。
到目前为止,我所做的是获取用于启动导航的NavHostFragment,当我不再需要它时,在它的navController 上调用popBackStack(),但它不起作用:
val navHost: NavHostFragment? = null
fun createSecondNav() {
navHostLogin = NavHostFragment.create(R.navigation.navigation_second)
theFragment.visibility = View.VISIBLE
supportFragmentManager.beginTransaction()
.replace(R.id.theFragment, navHostLogin!!)
.commit()
}
fun killSecondNav() {
theFragment.visibility = View.GONE
navHostLogin?.navController?.popBackStack() // returns false
navHostLogin = null
}
那么如何才能彻底杀死第二个navHost创建的碎片呢?
【问题讨论】:
标签: android kotlin android-architecture-navigation back-stack