我使用FragmentStatePagerAdapter
在ViewPager
内显示片段。
这些片段在来自父Activity
的
根据显示的片段显示/隐藏这两个图标,因此我尝试将Menu
保持在内存中以便动态修改它。
在ViewPager
上,总是加载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
创建一次,但是如何动态修改菜单呢?我是否必须使用活动修改它?
谢谢!