我有2个片段的SherlockFragmentActivity和ViewPager在它们之间滑动(除了ActionBar)。
每个SherlockFragment都有自己的菜单,如下所示:
public class MyFragment1 extends SherlockFragment {
private Menu menu;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
//...
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fr1, menu);
super.onCreateOptionsMenu(menu, inflater);
this.menu = menu;
}
//...
}
其他片段类看起来很相似。
您知道,ViewPager在首次启动活动时会实例化两个片段。因此,首先执行第一个片段的OnCreateView()
,然后是第一个片段的OnCreateOptionsMenu()
,然后是第二个片段的OnCreateView()
,然后是第一个片段的OnCreateOptionsMenu()
!“ / p>
请帮助,我需要了解我做错了什么。
答案 0 :(得分:0)
检查viewpager是否由SherlockFragmentActivity托管,以确保我可以进行该演员和随后的调用:)
public void onPageSelected(int position) {
...
if (context instanceof SherlockFragmentActivity)
((SherlockFragmentActivity)context).supportInvalidateOptionsMenu();
}
你需要像这样在onCreateOptionsMenu上下文中启动通货膨胀:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Fragment f = get your current Fragment
if (f != null && f instanceof SherlockFragment)
((SherlockFragment)f).onCreateOptionsMenu(menu, getSupportMenuInflater());
return super.onCreateOptionsMenu(menu);
}