簡體   English   中英

啟動新活動時未調用onCreateOptionsMenu

[英]onCreateOptionsMenu not called when starting new activity

我的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()並獲得了相同的結果。

嘗試在回調onCreateOptionsMenu實現中添加super方法。

return super.onCreateOptionsMenu(menu);

如果您在活動中使用工具欄

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

我的問題是如果擴展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>

別忘了像這樣調用父函數

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

你應該構建一個新的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;
}

我遇到了同樣的問題: - 我找到了對我有用的解決方案。

1>檢查你擴展類的內容: - 就我而言,我已經嘗試了擴展AppCompatActivity類的活動,菜單顯示正確,當我將其更改為活動類時,它就停止顯示了。

不工作: - 公共類GridViewActivity擴展Activity

2>嘗試使用AppCompatActivity類而不是活動類來擴展您的類。

工作: -

公共類GridViewActivity擴展了AppCompatActivity

onCreate調用setHasOptionsMenu(true)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM