onCreateOptionsMenu()没有在FragmentActivity上调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了onCreateOptionsMenu()没有在FragmentActivity上调用相关的知识,希望对你有一定的参考价值。

同事们,MainActivity类来自FragmentActivity,由于某种原因,活动的onCreateOptionsMenu()没有被调用。我有onCreate()的第一个断点,它正在被触发,而第二个断点在onCreateOptionsMenu(),它没有被触发。

import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {

    private FragmentPagerAdapter m_fragmentPagerAdapter;
    private ViewPager m_viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Create the adapter that will return a fragment for each of the  primary sections of the activity.
        m_fragmentPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter.
        m_viewPager = (ViewPager) findViewById(R.id.container);
        m_viewPager.setAdapter(m_fragmentPagerAdapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);      // Inflate the menu; this adds items to the action bar if it is present.
        return true;
    }
}

此应用程序中的碎片没有自己的菜单。属于该活动的一个菜单“涵盖”所有内容。

主题是Holo.Light

什么阻止onCreateOptionsMenu()被召唤?我错过了什么?

答案

仔细检查您是否确实将应用主题设置为Holo.Light。我无法解释导致问题的原因,但我能够重现它。在尝试了FragmentActivityAppCompatActivity之间的变化后,我不小心用FragmentActivity和主题设置为Theme.AppCompat.Light。这创建了你看到的行为,没有调用onCreateOptionsMenu()

作为一个侧面问题,你应该修复你的onCreateOptionsMenu()来调用super,如documentation所述:“派生类应该总是调用基础实现”。

另一答案

尝试:

setHasOptionsMenu();//call it from onCreate(); or onViewCreated();

此方法仅在片段中用于告知活动此片段具有选项菜单。

另一答案

添加setHasOptionsMenu(true);在你的onCreate()方法中。

以上是关于onCreateOptionsMenu()没有在FragmentActivity上调用的主要内容,如果未能解决你的问题,请参考以下文章

在手机版本上运行时,没有在 FragmentActivity 上调用 onCreateOptionsMenu

应用程序崩溃onCreateOptionsMenu(也许)

如何在选项卡 Activity 的片段中使用 onCreateOptionsMenu? (夏洛克动作条)

Android无菜单键,如何触发onCreateOptionsMenu(Menu menu)

onCreateOptionsMenu中的expandActionView永久删除或隐藏操作栏中的其他菜单项

片段内的 onCreateOptionsMenu