Android 当片段不是导航堆栈的顶部视图时隐藏菜单按钮
假设我有以下导航图: 在Android 当片段不是导航堆栈的顶部视图时隐藏菜单按钮,android,kotlin,menuitem,Android,Kotlin,Menuitem,假设我有以下导航图: 在homeFragment中,我有一个菜单项,用户可以在其中注销应用程序。如果用户导航到另一个视图,hostGameFragment或joinGameFragment在本例中,如预期的那样,菜单项将消失 但是,我在profileFragment中有另一个菜单项,它是homeFragment的bottomNavigationView的子片段。该菜单项切换用户是否可以编辑其配置文件。正如预期的那样,如果用户在bottomNavigationView中更改片段,它将消失。当用户
homeFragment
中,我有一个菜单项,用户可以在其中注销应用程序。如果用户导航到另一个视图,hostGameFragment
或joinGameFragment
在本例中,如预期的那样,菜单项将消失
但是,我在profileFragment
中有另一个菜单项,它是homeFragment
的bottomNavigationView
的子片段。该菜单项切换用户是否可以编辑其配置文件。正如预期的那样,如果用户在bottomNavigationView
中更改片段,它将消失。当用户在profile选项卡上并导航到hostGameFragment
或joinGameFragment
时,就会出现问题。在这种情况下,“编辑”菜单项将保留在操作栏上,即使它不应该保留
如何确保编辑菜单不会出现在homeFragment
之外
编辑菜单项的创建如下所示:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
if (viewModel.isEditable) {
inflater.inflate(R.menu.profile_fragment_menu, menu)
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_edit -> {
viewModel.toggleEditing()
true
}
else -> super.onOptionsItemSelected(item)
}
}