Android 单击工具栏上的“后退”按钮时,默认图标会被替换半秒钟

Android 单击工具栏上的“后退”按钮时,默认图标会被替换半秒钟,android,toolbar,android-toolbar,android-architecture-navigation,android-jetpack-navigation,Android,Toolbar,Android Toolbar,Android Architecture Navigation,Android Jetpack Navigation,我正在尝试替换工具栏上的默认后退按钮图标,如下所示: toolbar.navigationIcon = R.drawable.lalala 很好,而且很有效。但是,当我试图点击后退按钮时,有半秒钟我可以看到默认图标而不是我的。我能做错什么 我使用的是片段和JetPack导航。因为您使用的是导航组件,所以当您位于非根目的地时,预期的行为是显示向上按钮。 在设置方法之后,您可以使用addOnDestinationChangedListener对其进行更改 比如: navController.add

我正在尝试替换工具栏上的默认后退按钮图标,如下所示:

toolbar.navigationIcon = R.drawable.lalala
很好,而且很有效。但是,当我试图点击后退按钮时,有半秒钟我可以看到默认图标而不是我的。我能做错什么


我使用的是片段和JetPack导航。

因为您使用的是导航组件,所以当您位于非根目的地时,预期的行为是显示向上按钮。
在设置方法之后,您可以使用
addOnDestinationChangedListener
对其进行更改

比如:

navController.addOnDestinationChangedListener { _, destination, _ ->
   if(destination.id == R.id.xxxx) {
       toolbar.setNavigationIcon(R.drawable.xxxx)
   } else {
       //
   }
}

显示新活动时,是否看到默认按钮?也许你换错地方了。正在创建活动,创建视图,然后在替换图标半秒后。考虑在更改了正在进行的活动中的图标之后设置活动视图。如果您愿意,发布完整的代码,我可以为您提供更多帮助。@BogdanAndroid我正在使用片段和JetPack导航。那么,您正在替换活动上的图标?或者每个片段中都有一个工具栏?@BogdanAndroid我的活动中有一个工具栏(初始化和设置导航控制器逻辑)。在基本片段中,我有一个设置和处理此图标的逻辑(取决于我现在所在的位置,我将此图标设置为null(当我在父对象中时,我不希望看到汉堡包图标))。可能这是一个不适合使用此类代码的地方,或者还可以?您是否在navController.addOnDestinationChangedListener中设置导航图标?在此位置设置导航图标与我正在设置的位置有什么区别?(onViewCreated)@kxko区别在于您使用的导航组件在您的代码下工作,并为您设置图标。嗯,谢谢,我会尝试一下并让您知道!你能给我那个信息吗?因为我没有在android.developer上找到它(或者可能我是盲人:),非常感谢!你可以查一下。特别是“当用户在任何其他目的地时,导航按钮显示为向上按钮”