为什么我的onPrepareOptionsMenu方法没有被调用?

5
public class BFragmentTab extends Fragment {

    @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.recents, container, false);
     }

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        menu.clear();
        MenuItem filter = menu.findItem(R.id.filter);
        MenuItem refresh = menu.findItem(R.id.refresh);
        //depending on you conditions, either enable/disable
        filter.setEnabled(false);
        refresh.setEnabled(false);
        super.onPrepareOptionsMenu(menu);
    }
}

我正在尝试在我的Fragment类中调用onPrepareOptionsMenu,但它没有被调用。当我点击操作栏中的action tab时,我想要刷新我的菜单项。


http://developer.android.com/reference/android/app/Fragment.html#setHasOptionsMenu(boolean) - Selvin
请查看https://dev59.com/o2Uo5IYBdhLWcg3w7jEq。 - Tim Malseed
2个回答

14

onAttach方法中调用setHasOptionsMenu(true)


在Android编程中,调用onAttach比调用onCreateView有什么优势吗? - Jonathan Caryl
@DmitryZaitsev:我在onPrepareOptionsMenu方法中遇到了空指针异常。 - theJava
1
@theJava 至少它被称为这个名字,对吧? :) 在其他任何事情之前,你应该调用 super.onPrepareOptionsMenu - Dmitry Zaytsev
对于使用API 22.1.1的人,我刚刚发现库存在错误,并且onPrepareOptionsMenu被跳过了...请阅读https://dev59.com/-orda4cB1Zd3GeqPQsXy#30199286。 - Davideas

0

我遇到了同样的错误,而在我的情况下,一个子活动的xml布局文件中有一个错误。

令人惊讶的是,Eclipse没有显示错误,但是在将其删除后,程序可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接