onOptionsItemSelected未调用

bea*_*ear 5 android android-appcompat android-actionbar appcompatactivity

我的操作栏中有一个菜单项列表.每个项目单击应触发不同的方法.但是从不调用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);
    }
...
}
Run Code Online (Sandbox Code Playgroud)

这是操作栏菜单布局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>
Run Code Online (Sandbox Code Playgroud)

如何设置操作栏,以便在单击操作栏项时调用onOptionsItemSelected?

小智 11

在你的内部onCreateOptionsMenu,返回true而不是调用super.应该这样做

  • 此重写方法中没有布尔值的返回类型 (2认同)