MenuItem.setVisible(false) doesn't work in Fragment

元气小坏坏 提交于 2020-01-16 04:57:35

问题


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?

Code:

@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);

...

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


回答1:


In some occasions, if you forget to add

super.onCreateOptionsMenu(menu,inflater);

this will occur.




回答2:


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

Right after setVisible, triggering

invalidateOptionsMenu();

is effective?



来源:https://stackoverflow.com/questions/31837548/menuitem-setvisiblefalse-doesnt-work-in-fragment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!