2011-08-19 67 views
4

(Newbe)onOptionsItemSelected返回不正確的ID

當我點擊菜單上面的方法從第一菜單,而不是一個我點擊返回的ID上。如果我檢查菜單的標題濃縮是否正確。

int id = item.getItemId(); //returns id of an incorrect menu 
String Title = (String) item.getTitleCondensed(); //this returns the correct title. 

任何想法歡迎。

+0

你是什麼意思*第一個菜單*?這是一個子菜單嗎? – Phil

回答

1

您應該在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.xmlonCreateOptionsMenuonOptionsItemSelected,這樣很容易找出您的問題。

+0

嗨,謝謝你的回覆。我應該提到我的菜單來自menu.xml文件,所以我不分配id,它們是系統生成的,例如3124655或類似的。這是返回的系統ID不正確。 – Olan

+0

我已將資源添加到答案中。你也可以發佈你的'menu.xml','onCreateOptionsMenu'和'onOptionsItemSelected',這樣很容易找出你的問題。 – Victor

+0

嗨,教程正是我開始的地方。我的菜單看起來像這樣: – Olan

7

我有同樣的問題。生成的文件沒有正確更新。

我得到了同樣的效果,如果我重新排序在xml ...構建和驚喜的菜單項。點擊菜單帶來的其他代碼比預期的。

做一次清潔再試一次

+1

這只是發生在我身上 - 清潔幫助了我......奇怪 - 但是,謝謝;-) – Thomas

+0

我清理了這個項目並且它工作正常。謝謝。 –

相關問題