我的操作栏中有一个菜单项列表。每个项目单击应触发不同的方法。但是从不调用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?
答案 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);