3

我在显示 HomeAsUp 时遇到问题。我认为有一种方法可以将 NavColtroller 与 ActionBar 联系起来。所以我不需要为每个 Fragment 手动调整 Toolbar,主要是在使用包含返回上一屏时。

4

2 回答 2

1

我找到了答案

设置工具栏后,在活动中添加此命令:

NavigationUI.setupActionBarWithNavController(this, Navigation.findNavController(this, R.id.nav_host_fragment));

实际上这还不够......因为 HomeAsUp 将可见但不起作用!

要使其工作,有必要重写此方法:

@Override
public boolean onSupportNavigateUp() {
    return Navigation.findNavController(this, R.id.nav_host_fragment).navigateUp()
            || super.onSupportNavigateUp();
}

不要忘记在图中具有适当的属性(popUpTo 和 popUpToInclusive):

 <fragment
    android:id="@+id/subFragment"
    ...
    >
    <action
        android:id="@+id/action_subFragment_pop"
        app:popUpTo="@id/homeFragment"
        app:popUpToInclusive="true" />
</fragment>
于 2019-07-26T08:50:07.230 回答
0

下面为我​​工作

布局文件

<ConstraintLayout>
  <Toolbar>
  <fragment>
</ConstraintLayout>

里面的activity.java

private fun setUpToolbar() {
        toolBar = findViewById(R.id.toolbar)
        toolBar.inflateMenu(R.menu.menu)
        setSupportActionBar(toolBar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.setDisplayShowHomeEnabled(true)
    }
于 2019-07-26T08:50:45.843 回答