(Newbe)onOptionsItemSelected返回不正確的ID
當我點擊菜單上面的方法從第一菜單,而不是一個我點擊返回的ID上。如果我檢查菜單的標題濃縮是否正確。
int id = item.getItemId(); //returns id of an incorrect menu
String Title = (String) item.getTitleCondensed(); //this returns the correct title.
任何想法歡迎。
(Newbe)onOptionsItemSelected返回不正確的ID
當我點擊菜單上面的方法從第一菜單,而不是一個我點擊返回的ID上。如果我檢查菜單的標題濃縮是否正確。
int id = item.getItemId(); //returns id of an incorrect menu
String Title = (String) item.getTitleCondensed(); //this returns the correct title.
任何想法歡迎。
您應該在onCreateOptionsMenu和onCreateContextMenu中設置每個菜單項唯一的ID。
例如:
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。每個菜單選項都應該有一個唯一的常量。
補充:
你沒有檢查出this tutorial? 這個想法是一樣的。你應該在menu.xml
設置不同的ID:
<?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>
然後使用這些ID在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.xml
,onCreateOptionsMenu
和onOptionsItemSelected
,這樣很容易找出您的問題。
我有同樣的問題。生成的文件沒有正確更新。
我得到了同樣的效果,如果我重新排序在xml ...構建和驚喜的菜單項。點擊菜單帶來的其他代碼比預期的。
做一次清潔再試一次
這只是發生在我身上 - 清潔幫助了我......奇怪 - 但是,謝謝;-) – Thomas
我清理了這個項目並且它工作正常。謝謝。 –
你是什麼意思*第一個菜單*?這是一個子菜單嗎? – Phil