0

我使用 aFragmentStatePagerAdapter在 a 中显示片段ViewPager

这些片段在来自 parent 的图标之上显示 2 个附加图标Activity

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

在 myViewPager上,总是加载 3 个片段,只显示中间的一个。

问题如下:似乎只在第一次创建时才调用它onCreateOptionsMenu,因此,当我尝试获取其他片段上的菜单时,我得到了空指针。请看下面的代码:onPrepareOptionsMenuFragment

@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,但是我怎样才能动态修改菜单呢?我必须使用 Activity 修改它吗?

谢谢!

4

0 回答 0