MenuItem.setVisible(false)在Fragment中不起作用 [英] MenuItem.setVisible(false) doesn't work in Fragment

查看:64
本文介绍了MenuItem.setVisible(false)在Fragment中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Fragment1,我创建了Fragment1的newInstance并从Fragment1开始,即我的片段堆栈是Fragment1-> Fragment1.我希望它在工具栏菜单的第一个实例中可见,但在第二个实例中不可见.当我启动第一个实例时,项目是不可见的,我将转到第二个实例,在第二个实例中,该项目是可见的,但是当我点击返回按钮时,我将转到第一个实例,并且该项目是可见的,但必须不可见.我该如何解决?

I have a Fragment1, and i am make newInstance of Fragment1 and start in Fragment1, i.e. my fragment stack is Fragment1 -> Fragment1. I want that in first instance visible item in toolbar menu, but in second instance invisible. When i start first instance, item is invisible, i go to the second instance, in second instance the item is visible, but when i tap button back, i go to first instance, and item is visible, but must be invisible. How i can fix it?

代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
...

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.t_menu, menu);
        int fragmentCount =  getActivity()
                .getSupportFragmentManager().getBackStackEntryCount();

        menu.findItem(R.id.action_search).setVisible(fragmentCount > 0);

...

当我将代码从onCreateOptionsMenu移到onPrepareOptionsMenu时,结果是相同的.在 fragmentCount 中显示正确的结果!

When i move code from onCreateOptionsMenu to onPrepareOptionsMenu, result is same. In fragmentCount correct result!

推荐答案

在某些情况下,如果您忘记添加

In some occasions, if you forget to add

super.onCreateOptionsMenu(menu,inflater);

这会发生.

这篇关于MenuItem.setVisible(false)在Fragment中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆