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
中显示片段
这些片段在来自父活动的图标上方显示另外两个图标
这两个图标是根据显示的片段显示/隐藏的,因此我试图在内存中保持菜单的膨胀,以便动态修改它
在myViewPager
上,始终加载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
,它允许在可视化视图和编辑视图之间切换。这两个菜单项用于在这两个视图之间切换。这意味着每个片段菜单都必须根据片段的状态(新片段-->编辑视图、旧片段-->可视化视图)进行更改。