Android 访问片段';FragmentStatePagerAdapter中的s菜单

Android 访问片段';FragmentStatePagerAdapter中的s菜单,android,android-fragments,android-menu,Android,Android Fragments,Android Menu,我使用FragmentStatePagerAdapter在ViewPager中显示片段 这些片段在来自父活动的图标上方显示另外两个图标 这两个图标是根据显示的片段显示/隐藏的,因此我试图在内存中保持菜单的膨胀,以便动态修改它 在myViewPager上,始终加载3个片段,仅显示中间的片段 问题在于:似乎只为创建的第一个片段调用了onCreateOptions菜单和onPrepareOptions菜单,因此,当我尝试获取其他片段上的菜单时,会得到空指针。请参阅下面的代码: @Override

我使用
FragmentStatePagerAdapter
ViewPager
中显示片段

这些片段在来自父
活动的图标上方显示另外两个图标

这两个图标是根据显示的片段显示/隐藏的,因此我试图在内存中保持
菜单的膨胀,以便动态修改它

在my
ViewPager
上,始终加载3个片段,仅显示中间的片段

问题在于:似乎只为创建的第一个
片段
调用了
onCreateOptions菜单
onPrepareOptions菜单
,因此,当我尝试获取其他片段上的菜单时,会得到空指针。请参阅下面的代码:

@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);
        }
    }
但一旦系统尝试加载第二个
片段
,这些函数就会失败

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


谢谢

当碎片移入或移出视图时,隐藏和显示是自动的。除了在带有操作栏项的片段上调用
sethaspoptions菜单(true)
(对于那些没有调用的片段,不调用它),没有什么需要做的了。查看您的场景与此有何不同?我的片段使用的是一个
ViewSwitcher
,它允许在可视化视图和编辑视图之间切换。这两个菜单项用于在这两个视图之间切换。这意味着每个片段菜单都必须根据片段的状态(新片段-->编辑视图、旧片段-->可视化视图)进行更改。