开始新活动时未调用onCreateOptionsMenu

Err*_*een 5 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);
}
Run Code Online (Sandbox Code Playgroud)

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

Mr.*_*r.Q 6

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

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


srv*_*sud 5

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

return super.onCreateOptionsMenu(menu);
Run Code Online (Sandbox Code Playgroud)


小智 5

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

Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.inflateMenu(R.menu.menu_main);
Run Code Online (Sandbox Code Playgroud)

当然,toolbar是在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>
Run Code Online (Sandbox Code Playgroud)