抱歉我的英语不好
我刚刚更新了我的 gradle 版本,我的所有导航都出现了错误,但我仍然不确定这就是我的导航出现错误的原因。
这是我在 MainActivity 上的片段处理程序
val navView: BottomNavigationView = findViewById(R.id.bottom_nav_view)
val navController = findNavController(R.id.nav_host_fragment)
navController.setGraph(R.navigation.nav_graph)
navView.setupWithNavController(navController)
第一个片段是填充 MainActivity 的 HomeFragment
如果我想更改为另一个片段,我正在使用这个
private fun callFeatureIncome() {
val fragment = IncomeFragment.newInstance()
val transaction = fragmentManager?.beginTransaction()
transaction?.setReorderingAllowed(true)
transaction?.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
transaction?.replace(R.id.nav_host_fragment, fragment)
transaction?.addToBackStack(null)
transaction?.commit()
}
然后出现错误,我无法打开 IncomeFragment
但是如果我删除
transaction?.addToBackStack(null)
我可以去IncomeFragment
错误消失了,但我无法使用后退按钮返回到上一个片段,因为堆栈上没有记录器。
之前,一切都好
来自 @ianhanniballake 的回答之所以会发生这种情况,是因为我在 NavController 之上使用了 FragmentTransaction。
现在我删除 FragmentTransaction 并使用它来浏览 nav_graph
val bundle = Bundle()
bundle.putString("bundle_name", contributionId.toString())
val navHostFragment = activity?.supportFragmentManager?.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
navController.navigate(R.id.your_fragment_id, bundle)