(Newbe)が間違っID
を返すonOptionsItemSelected。メニューのタイトルが凝縮されているかどうかを確認すると正しいです。
int id = item.getItemId(); //returns id of an incorrect menu
String Title = (String) item.getTitleCondensed(); //this returns the correct title.
アイデアを歓迎します。
(Newbe)が間違っID
を返すonOptionsItemSelected。メニューのタイトルが凝縮されているかどうかを確認すると正しいです。
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>
そしてonOptionsItemSelected
にこれらのIDを使用します。
@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
を公開して、問題を簡単に把握することもできます。
こんにちは、お返事ありがとうございます。私は、私のメニューはmenu.xmlファイルからのものだと言わねばならないので、私はIDを割り当てず、システムは3124655などのように生成されます。そして、それは間違っているシステムIDが返されます。 – Olan
私は答えにリソースの一部を追加しました。また、 'menu.xml'、' onCreateOptionsMenu'、 'onOptionsItemSelected'を公開することで、問題を簡単に把握することができます。 – Victor
こんにちは、チュートリアルは私が始めた場所です。私のメニューは次のようになっています: – Olan
私は同じ問題を抱えていました。ビルドから生成されたファイルは正しく更新されません。
xmlのメニュー項目を並べ替えると同じ効果が得られます。ビルドと驚き。メニューをクリックすると、予想外のコードが表示されます。
クリーンで再試行してください。
これはちょうど私に起こりました - クリーニングが私を助けました...奇妙な - しかし感謝;-) – Thomas
私はプロジェクトをきれいにし、それは働いた。ありがとう。 –
*最初のメニュー*は何ですか?これはサブメニューですか? – Phil