onOptionsItemSelected未调用

时间:2017-03-09 21:08:23

标签: android android-actionbar android-appcompat 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);
    }
...
}

这是操作栏菜单布局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?

3 个答案:

答案 0 :(得分:10)

onCreateOptionsMenu内,返回true而不是调用super。应该这样做

答案 1 :(得分:1)

如下所示进行更改:

@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;
}

答案 2 :(得分:0)

在onCreate()中,像这样调用setSupportActionbar()

toolbar = (Toolbar)findViewById(R.id.main_toolbar);
setSupportActionBar(toolbar);