在FragmentStatePagerAdapter中访问Fragment的菜单

时间:2013-09-21 12:51:59

标签: android android-fragments android-menu

我使用FragmentStatePagerAdapterViewPager内显示片段。

这些片段在来自父Activity

之上显示2个额外的图标。

根据显示的片段显示/隐藏这两个图标,因此我尝试将Menu保持在内存中以便动态修改它。

ViewPager上,总是加载3个片段,只显示中间片段。

问题如下:似乎onCreateOptionsMenuonPrepareOptionsMenu仅为创建的第一个Fragment调用,因此,当我尝试获取时,我得到空指针菜单上的其他片段。请参阅以下代码:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        //Get the 2 icons for the rates
        inflater.inflate(R.menu.rate_fragment, menu);
        //Get activity's icons
        super.onCreateOptionsMenu(menu, inflater);
        mMenu = menu;
    }

以下是我用来隐藏/显示菜单项的功能:

private void hideOption(int id){
        MenuItem item = mMenu.findItem(id);
        if(item != null){
            item.setVisible(false);
        }
    }

    private void showOption(int id){
        MenuItem item = mMenu.findItem(id);
        if(item != null){
            item.setVisible(true);
        }
    }

但是一旦系统尝试加载第二个Fragment,这些函数就会失败。

我的猜测是菜单只为FragmentStatePagerAdapter创建一次,但是如何动态修改菜单呢?我是否必须使用活动修改它?

谢谢!

0 个答案:

没有答案