Android Jetpack导航自定义后退按钮与后退箭头重叠

时间:2019-02-22 06:07:05

标签: android android-toolbar android-navigation android-jetpack

结合使用 android jetpack导航和工具栏和抽屉,是根目录有一个汉堡菜单图标(用于切换抽屉),而在子片段中有一个后退按钮。

打开/关闭后退箭头上的子片段时,还会存在动画。

现在是问题:在我的一个孩子片段中,我设置了一个自定义导航后退按钮

toolbar_main.setNavigationIcon(R.drawable.ic_clear)

这也可以,但是关闭时出现“小故障”,其中

  1. 自定义图标消失
  2. 后退箭头一会可见(这是“小故障”
  3. 孩子关闭,再次看到根片段(带有汉堡图标)

问题:

这是“小故障”错误还是我必须调用 setNavigationIcon 以外的其他名称(例如ActionBarDrawerToggle或类似名称)?

1 个答案:

答案 0 :(得分:0)

解决方案:在每个片段中

override fun onAttach(context: Context) {
    super.onAttach(context)
    val activity = context as BaseActivity
    if (navController.backStack.size > 3) {
        activity.toolbar.setNavigationIcon(getNavigationIcon())
    }
}

大于3,因为:

<navigation
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/navigation"
    app:startDestination="@+id/startFragment"> <----- always +1

    <fragment
        android:id="@+id/startFragment"> <----- startFragment + 1 = 2

    <fragment
        android:id="@+id/fragment_1"> <----- startFragment + 1 = 3

    <fragment
        android:id="@+id/fragment_2"> <----- startFragment + 1 = 3

</navigation>