我使用 aFragmentStatePagerAdapter
在 a 中显示片段ViewPager
。
这些片段在来自 parent 的图标之上显示 2 个附加图标Activity
。
这两个图标根据显示的片段显示/隐藏,因此我尝试将Menu
膨胀的内容保留在内存中以便动态修改它。
在 myViewPager
上,总是加载 3 个片段,只显示中间的一个。
问题如下:似乎只在第一次创建时才调用它onCreateOptionsMenu
,因此,当我尝试获取其他片段上的菜单时,我得到了空指针。请看下面的代码:onPrepareOptionsMenu
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
,但是我怎样才能动态修改菜单呢?我必须使用 Activity 修改它吗?
谢谢!