[英]OnCreateOptionsMenu is called for the wrong Fragment
我有3個片段的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()
的第一個片段的了!
請幫助,我需要了解我做錯了什么。
檢查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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.