由于没有 addToBackStack Kotlin

问题描述 投票:0回答:1

抱歉我的英语不好

我刚刚更新了我的 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

错误消失了,但我无法使用后退按钮返回到上一个片段,因为堆栈上没有记录器。

之前,一切都好

android kotlin android-fragments android-fragmentactivity
1个回答
0
投票

来自 @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)
© www.soinside.com 2019 - 2024. All rights reserved.