Android导航组件中的处理按钮

时间:2019-08-30 20:06:50

标签: android kotlin android-architecture-navigation up-navigation

在通过Android导航组件设置的主要活动中,我有两个片段A和B。 片段A包含一个recyclerView,在其中单击一个项目将导航到片段B。

问题是当我单击片段B内的向上按钮时,它不会导航回到片段A,而是会重新加载片段B。它将仅在第二次单击时导航回去。后退按钮的行为相同。

一旦我设法导航回片段A,当我单击一个项目转到片段B时,就会抛出此异常:

java.lang.IllegalArgumentException: navigation destination com.example.sampleapp:id/action_accountSelectionFragment_to_cameraSelectionFragment is unknown to this NavController

这是最新版本的已知错误吗?我正在使用2.2.0-alpha01

这是我实施导航的方式:

MainActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val navController = findNavController(R.id.nav_host_fragment)
        setupActionBarWithNavController(navController)
    }

override fun onSupportNavigateUp() = 
    findNavController(R.id.nav_host_fragment).navigateUp()

FragmentA:当我在recyclerView中单击某个项目时调用的回调方法

private fun goToCameraSelectionActivity(accountId: Int, accountName: String) {
        findNavController().navigate(
            AccountSelectionFragmentDirections.actionAccountSelectionFragmentToCameraSelectionFragment(accountName, accountId)
        )
}

我尝试过使用'popTo',但问题仍然相同。

1 个答案:

答案 0 :(得分:0)

我致电

后问题已解决
findNavController().navigate(
    AccountSelectionFragmentDirections.actionAccountSelectionFragmentToCameraSelectionFragment(accountName, accountId)
)

在我的适配器onClickListener中,而不是在经历我的MVI体系结构的循环后打开(单击->意向->状态->导航)。

该组件似乎存在计时问题。