Вы должны установить для каждого пункта меню уникальный идентификатор в onCreateOptionsMenu и onCreateContextMenu.
Например:
public static final int CONTEXT_MENU_DELETE = Menu.FIRST;
public static final int CONTEXT_MENU_EDIT = CONTEXT_MENU_DELETE + 1;
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(0, CONTEXT_MENU_DELETE, 1, R.string.delete);
menu.add(0, CONTEXT_MENU_EDIT, 2, R.string.edit);
}
// And then
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()) {
case CONTEXT_MENU_DELETE:
// Delete item
break;
case CONTEXT_MENU_EDIT:
// Edit item
break;
}
}
То же самое для onCreateOptionsMenu и onOptionsItemSelected.У вас должна быть уникальная константа для каждого пункта меню.
Добавлено:
Разве вы не ознакомились с этим руководством ?Идея та же.Вы должны установить разные идентификаторы в menu.xml
:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
android:icon="@drawable/ic_new_game"
android:title="@string/new_game" />
<item android:id="@+id/help"
android:icon="@drawable/ic_help"
android:title="@string/help" />
</menu>
, а затем использовать эти идентификаторы в onOptionsItemSelected
:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
newGame();
return true;
case R.id.help:
showHelp();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Ознакомьтесь с этими блоками кода из официального руководства по Android Menu и сравнитек вашему собственному коду.Вы также можете опубликовать свои menu.xml
, onCreateOptionsMenu
и onOptionsItemSelected
, чтобы было легче выяснить вашу проблему.