我有一个带有 3 个主要目的地的应用程序,可以通过底部导航 View 访问。每个目的地都有自己的导航图。
问题是当我最小化并重新打开我的应用程序时,导航组件会重置为默认目的地。为什么会这样?
我的主要 Activity :(省略无关代码)
class MainActivity : AppCompatActivity() {
// List of base host containers
val fragments = listOf(
HomeHostFragment(),
CoursesHostFragment(),
SearchHostFragment()
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val viewPager: ViewPager = findViewById(R.id.main_activity_pager)
viewPager.adapter = ViewPagerAdapter()
}
inner class ViewPagerAdapter : FragmentPagerAdapter(supportFragmentManager) {
override fun getItem(position: Int): Fragment =
fragments[position]
override fun getCount(): Int =
fragments.size
}
}
HomeHostFragment.kt:class HomeHostFragment : Fragment() {
private lateinit var navController: NavController
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
inflater.inflate(R.layout.fragment_home_host, container, false)
override fun onStart() {
super.onStart()
navController = requireActivity().findNavController(R.id.nav_host_home)
navController.setGraph(R.navigation.nav_graph_home)
NavigationUI.setupWithNavController(toolbar_home, navController)
}
fun onBackPressed(): Boolean {
return navController.navigateUp()
}
}
最佳答案
每当onStart()
被称为,NavigationUI.setupWithNavController()
再次调用它重置导航。将此电话移至 onViewCreated()
这样导航设置就不会在每次 fragment 暂停和重新启动时完成。
关于android - 如何在最小化应用程序后坚持导航组件目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67189740/