web-dev-qa-db-ja.com

onOptionsItemSelectedは呼び出されません

アクションバーにメニュー項目のリストがあります。アイテムをクリックするたびに、異なるメソッドがトリガーされます。ただし、onOptionsItemSelectedが呼び出されることはありません。

MainActivityでアクションバーを定義する方法は次のとおりです。

public class MainActivity extends AppCompatActivity {
...
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings_1) {
            //do something
            return true;
        } else if (id == R.id.action_settings_2) {
            //do something
            return true;
        } else if (id == R.id.action_settings_1) {
            //do something
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
...
}

これは、アクションバーのメニューレイアウトmenu_mainです。

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    tools:context="com.example.MainActivity">
    <item
        Android:id="@+id/action_settings_1"
        Android:orderInCategory="1"
        Android:title="Item 1"
        app:showAsAction="never" />
    <item
        Android:id="@+id/action_settings_2"
        Android:orderInCategory="2"
        Android:title="Item 2"
        app:showAsAction="never" />
    <item
        Android:id="@+id/action_settings_3"
        Android:orderInCategory="3"
        Android:title="Item 3"
        app:showAsAction="never" />
</menu>

アクションバーアイテムがクリックされたときにonOptionsItemSelectedが呼び出されるように、アクションバーを設定するにはどうすればよいですか?

6
bear

onCreateOptionsMenu内で、superを呼び出す代わりにtrueを返します。それはそれをする必要があります

13
Rui Cardoso

以下のように変更してください:

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