当片段不是导航堆栈的顶视图时隐藏 MenuButton

问题描述

假设我有以下导航图:

navigation graph

homeFragment 中,我有一个菜单项,用户可以在其中注销应用程序。如果用户导航到另一个视图(在本例中为 hostGameFragmentjoinGameFragment),如预期的那样,菜单项会消失。

但是,我在 profileFragment 中有另一个菜单项,它是 bottomNavigationViewhomeFragment 的子片段。该菜单项切换用户是否可以编辑他的个人资料。正如预期的那样,如果用户更改 bottomNavigationView 中的片段,它就会消失。当用户在个人资料选项卡上并导航到 hostGameFragmentjoinGameFragment 时,问题就会出现。在这种情况下,即使不应该,编辑菜单项也会保留在操作栏上。

如何确保编辑菜单不会出现在 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)
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)