簡體   English   中英

為錯誤的片段調用OnCreateOptionsMenu

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM