我尝试阅读this,但是我的问题有点不同。
我需要一些不同的工具栏,因此根据here的文档,我需要将工具栏设置在我的每个片段中,而不是在MainActivity中。
所以我在片段的每个xml中设置工具栏。然后在每个片段中,我使用此代码来设置工具栏
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val toolbar = view.findViewById<androidx.appcompat.widget.Toolbar>(R.id.toolbar3)
val navHostFragment = NavHostFragment.findNavController(this);
NavigationUI.setupWithNavController(toolbar, navHostFragment)
}
但是我的底部导航视图的顶层片段中有后退按钮,如下图所示。如果我从片段而不是从MainActivity设置工具栏,我会困惑如何传递appBarConfiguration
答案 0 :(得分:1)
我终于得到了答案。我需要在每个顶级片段中设置appBarConfiguration
所以在我的HomeFragment
和SearchFragment
中,您应该这样
val toolbar = view.findViewById<androidx.appcompat.widget.Toolbar>(R.id.toolbar2)
val appBarConfiguration = AppBarConfiguration(setOf(
R.id.destination_home,
R.id.destination_search)
)
val navHostFragment = NavHostFragment.findNavController(this);
NavigationUI.setupWithNavController(toolbar, navHostFragment,appBarConfiguration)
要使用AppBarConfiguration
类,您需要navigation-ui-ktx
工件,并且在gradle应用中,还需要使用此编译选项和kotlin选项
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}
答案 1 :(得分:0)
您应该尝试使用“自定义操作栏”,而不是默认的“操作栏”,并且您不希望在哪个片段中回退按钮。只需设置“可见性”即可。