按钮返回带有导航组件的 startDestination

Fer*_*eno 8 android kotlin android-architecture-navigation

我需要一个带有导航图的第二个活动,并在工具栏中有一个返回按钮到第一个也包含导航图的活动

在我的第二个活动中,如果出现后退箭头按钮但在活动中没有,我在进入片段时有 onSupportNavigateUp 和 setupActionBarWithNavController。

尝试在活动和片段中添加 setHomeButtonEnabled 和 setDisplayHomeAsUpEnabled ,如果按钮出现回来,但是当我在前面输入一些片段并返回片段时, startDestination 按钮消失了

我只需要将按钮保持在活动中并解决我的问题

Rui*_*Rui 7

您可以通过指定 setFallbackOnNavigateUpListener 来完成此操作:

private fun setupToolbar() {
    val navController = findNavController(R.id.nav_host_fragment)

    val appBarConfiguration =
        AppBarConfiguration.Builder()
            .setFallbackOnNavigateUpListener { onNavigateUp() }
            .build()

    dataBinding.toolbar.apply {
        setupWithNavController(navController, appBarConfiguration)
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在 Activity 中做任何你想做的事情:

override fun onNavigateUp(): Boolean {
    finish()
    return true
}
Run Code Online (Sandbox Code Playgroud)


Hus*_*dar 2

你不能,活动有自己的工具栏,在你的情况下,它们有两个不同的导航控制器。因此,您的第二个活动为其片段管理导航按钮,当启动目标片段时,导航按钮(后退按钮)消失,因为它没有留下目的地。如果您以编程方式在该(第二个活动)的开始目的地上显示导航按钮并管理 onClick 并启动第一个活动,则该活动始终会转到第一个活动片段的开始目的地,因为它有自己的导航控制器。

问题是导航用户界面不是这样工作的。更好的方法是仅使用具有多个片段的一个活动。并使用任何其他方法在同一导航控制器内解决您的问题。