2011-06-07 81 views
2

我完全卡住爲什麼會發生這種情況。選項菜單工作得很好,但現在不再有效了。onCreateOptionsMenu沒有爲我做任何事

當我點擊菜單按鈕時,菜單打開,我點擊它,什麼也沒有。它在我做LogCat時確實註冊了MenuItem ...我真的要拉我的頭髮,我不明白爲什麼會發生這種情況。

06-06 22:19:07.899: DEBUG/MYTAG(23124):愚蠢的答題 ID =保存設置項目ID = 2133000192 ID2 = 2133065728

下面是代碼和xml

@Override 
    public boolean onCreateOptionsMenu(Menu menu){ 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.settings, menu); 
     Log.d("MYTAG", "Clicked saved1"); 
     return super.onCreateOptionsMenu(menu); 
    } 



@Override 
    public boolean onOptionsItemSelected(MenuItem item){ 
     Log.d("MYTAG", "Stupid clicker id="+item+" item id="+item.getItemId()+" id2="+R.mainmenuSettings.save1); 
     switch(item.getItemId()){ 
     case R.mainmenuSettings.save1: 
      Log.d("MYTAG", "Stupid clicker"); 
      break; 
     } 
     return super.onOptionsItemSelected(item); 
    } 


<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+mainmenuSettings/save1" 
      android:title="save settings"/> 
</menu> 
+0

是本次活動tabhost的子活動...? – 2011-06-07 05:29:19

+0

冒風化!我刪除了舊的settings.xml,並創建了一個新的,但名稱不同的「mysettings.xml」,我甚至將id更改爲mysettings。現在它工作了!我已經在舊的XML文件中試過了,但沒有結果...我只想知道爲什麼!? – 2011-06-07 05:30:17

+0

@Dinesh,都沒有(我認爲)這一切都在一個活動/課。請隨身攜帶,我已經學習了java和android兩個月。 – 2011-06-07 05:30:46

回答

5

您的菜單XML存在錯誤。 「id」屬性需要以「@ + id /」開頭,所以這需要是「@ + id/mainmenuSettingsSave1」或類似的東西。另外,你需要在你的代碼來引用這是R.id.mainmenuSettingsSave1:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/mainmenuSettingsSave1" 
      android:title="save settings"/> 
</menu> 

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.settings, menu); 
    Log.d("MYTAG", "Clicked saved1"); 
    return super.onCreateOptionsMenu(menu); 
} 



@Override 
public boolean onOptionsItemSelected(MenuItem item){ 
    Log.d("MYTAG", "Stupid clicker id="+item+" item id="+item.getItemId()+" id2="+R.id.mainmenuSettingsSave1); 
    switch(item.getItemId()){ 
    case R.id.mainmenuSettingsSave1: 
     Log.d("MYTAG", "Stupid clicker"); 
     break; 
    } 
    return super.onOptionsItemSelected(item); 
} 
+0

真的嗎?我在很多測試程序中都使用了@ + anyname/label,並且這些工作正常...... – 2011-06-07 05:37:29

+0

如果您沒有使用正確的前綴,那麼Android將無法將其識別爲ID資源。如果你不相信我,請參閱http://developer.android.com/guide/topics/ui/declaring-layout.html#id。 – 2011-06-07 05:39:41

+0

聖牛...然後我一定是錯的。我有工作要做T_T – 2011-06-07 05:42:48