启动新活动时未调用onCreateOptionsMenu

时间:2015-04-24 13:16:18

标签: android android-inflate

我的onCreateOptionsMenu仅适用于我的MainActivity,当我尝试将另一个onCreateOptionsMenu放入另一个活动中以膨胀不同的菜单时,它不会显示我的菜单栏(请注意,我已将其设置为两项活动都相同)。

我没有收到任何错误,只是在我的辅助活动中没有显示我的菜单栏。

这是我的代码:

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    //noinspection SimplifiableIfStatement
    int id = item.getItemId();
    if (id == R.id.action_back) {
        finish();
    }
    return super.onOptionsItemSelected(item);
}

另请注意,我已将getMenuInflater()更改为super.getMenuInflater()并获得了相同的结果。

7 个答案:

答案 0 :(得分:4)

尝试在回调onCreateOptionsMenu实现中添加super方法。

vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(100);

答案 1 :(得分:4)

如果您在活动中使用工具栏

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_map);
   mToolbar = (Toolbar) findViewById(R.id.tool_bar);
   setSupportActionBar(mToolbar);
}

答案 2 :(得分:3)

我的问题是如果扩展Activity,则不会触发onCreateOptionsMenu。是否在onCreate中手动完成:

Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.inflateMenu(R.menu.menu_main);

当然,工具栏是在CoordinatorLayout中定义的

<android.support.design.widget.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>

答案 3 :(得分:1)

不要忘记像这样调用父函数

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    ....
}

答案 4 :(得分:0)

你应该构建一个新的xml菜单(Second.xml)。

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

答案 5 :(得分:0)

我遇到了同样的问题: - 我找到了适用于我的解决方案。

1&gt;检查你扩展类的内容: - 在我的情况下,我尝试了扩展AppCompatActivity类的活动,菜单显示正确,当我将其更改为活动类时,它就停止显示。

不工作: - 公共类GridViewActivity扩展了Activity

2&gt;尝试使用AppCompatActivity类而不是活动类扩展您的类。

工作: -

公共类GridViewActivity扩展了AppCompatActivity

答案 6 :(得分:0)

setHasOptionsMenu(true)致电onCreate

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
     }