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)
    }
}