微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决当片段不是导航堆栈的顶视图时隐藏 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 举报,一经查实,本站将立刻删除。