2011-06-23 27 views
1

我已經離開Java一段時間了 - 功能編程一直是我的繆斯 - 最近決定跳回來與Android應用程序。事情進展順利。 Javascript的語法大部分都回到了我的大腦中,OO的設計原則有點生疏,但我並不害怕重構因子。Android選項菜單無法正常工作;我錯過了什麼?

我遇到的一個問題是平臺中的選項菜單。我在我的主要活動(下面)中通過菜單充氣器從XML文件加載它們,我可以看到它們!但是,當我按他們的東西變得怪異 - 但不喜歡與你最好的朋友看到​​你的祖母化妝,更不奇怪。

出於某種原因,當我按下第一個按鈕時,我在下面的代碼示例中收到友好的default消息,「這不是一個選項,白癡!」。當我按第二個時,消息是「添加一個」。不知怎的,我已經離開了!但是,但是如何!?但爲什麼!?

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/add_single_id" 
      android:title="@string/add_one" /> 
    <item android:id="@+id/add_multi_id" 
      android:title="@string/add_multi" /> 
</menu> 

...這是由菜單充氣加載中...

public boolean onCreateOptionsMenu(Menu menu){ 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.option_menu, menu); 
    return true; 
} 

...終於爲項目聽者選擇。

public boolean onOptionsItemSelected(MenuItem item){ 
    switch(item.getItemId()){ 
     case R.id.add_single_id: 
      Toast.makeText(this, "Adding One", Toast.LENGTH_LONG).show(); 
      add_single(); 
      break; 
     case R.id.add_multi_id: 
      Toast.makeText(this, "Adding n", Toast.LENGTH_LONG).show(); 
      Intent i = new Intent(this, SelectMulti.class); 
      startActivityForResult(i, ACTIVITY_LOADMULTI); 
      break; 
     default: 
      Toast.makeText(this, "That's not an option, moron!", Toast.LENGTH_LONG).show(); 
      return false; 
    } 
    return true; 
} 
+1

BOOH,好的。我相信你的代碼是正確的,我傾向於認爲這將是看到那麼令人驚訝。我的祖母和我最好的朋友一起出...;) 如果你在控制檯打印它,你打開哪個值? – Snicolas

+0

當你膨脹菜單,你能列出所有項目ID? – Snicolas

+1

你可以清理你的項目,然後運行。在清潔後工作了 – mkso

回答

3

這發生在我身上很多次當我在Eclipse中開發Android和清潔,改建建設工程修復它,因爲它會重建的Android資源文件,並正確映射到你的用戶界面的ID。

+0

我剛剛刪除了gen /文件夾;還有什麼我可能需要做的嗎? – nlucaroni

+0

這也將解決這個問題 – mkso

1

在你的XML你有ID = add_one_id但在你的代碼使用R.id.add_single_id

相關問題