Android 未在FragmentActivity上调用OnCreateOptions菜单()

Android 未在FragmentActivity上调用OnCreateOptions菜单(),android,menu,Android,Menu,同事们,MainActivity类是从FragmentActivity派生的,由于某些原因,没有调用activity的onCreateOptions菜单()。我在onCreate()中有第一个断点,它被触发,而在oncreateoptions菜单()中有第二个断点,它没有被触发 import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { pri

同事们,
MainActivity
类是从
FragmentActivity
派生的,由于某些原因,没有调用activity的
onCreateOptions菜单()
。我在
onCreate()
中有第一个断点,它被触发,而在
oncreateoptions菜单()
中有第二个断点,它没有被触发

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;
    }
}
此应用程序中的片段没有自己的菜单。属于活动的一份菜单“涵盖”了所有内容

主题是全息。光


是什么阻止调用
onCreateOptions菜单()
?我缺少什么?

添加设置选项菜单(true);在onCreate()方法中。

再次检查是否已将应用程序主题设置为
Holo.Light
。我无法解释问题的原因,但我能够重现它。在尝试了
FragmentActivity
AppCompatActivity
之间的更改之后,我意外地运行了
FragmentActivity
,并将主题设置为
theme.AppCompat.Light
。这创建了您正在看到的行为,其中未调用
onCreateOptions菜单()

作为一个附带问题,您应该修复
onCreateOptions菜单()
以调用super,如“派生类应始终调用基本实现”中所述。请尝试:

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

此方法仅在片段中用于告诉活动此片段有一个选项菜单。

OP试图使其显示在
活动中
而不是
片段
片段活动
没有
设置选项菜单()
方法。是否尝试调用return super.onCreateOptions菜单(菜单);在OnCreateOptions菜单()中;?您是否尝试过扩展
AppCompatActivity
?这将添加一个显示菜单的工具栏。请注意,在这种情况下,您可能必须更改主题。@George我知道我只针对较新版本的Android(从4.3开始)。据我所知,AppCompat允许旧版本的API执行新版本中引入的操作。然而,我觉得AppCompat是一个我应该可以不用的补丁。(当然,有可能我对AppCompat的历史和用途的理解不正确。)将基类更改为
AppCompatActivity
确实带来了菜单。谢谢。你的直觉是,我实际上没有将应用程序主题设置为
Holo.Light
,这是正确的。在这一过程中,我遇到了两个演示片段的示例。源于
活动
,不使用旧式支持库。使用
碎片活动
。既然
Activity
似乎能够处理片段,是否总是需要使用
FragmentActivity
?(我的这个应用程序将从头开始编写,我不需要支持古老的设备。)@Nickalexev:如果你不需要支持API 11之前的设备,你可以使用
活动
而不是
碎片活动
。根据这个数据,API小于11的设备现在约为3%。