2011-12-12 30 views
2

我覺得這可能是一個愚蠢的問題,但我不知道該怎麼做。Android SubMenus點擊時沒有做任何事情

我有一個正常工作的菜單。在一個菜單中的項目:「搜索」帶來了不同的項目,如「餐廳」子菜單,「咖啡館」等

下面是XML代碼創建菜單和子菜單:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_entry" 
     android:title="@string/new_entry" 
     android:icon="@drawable/add_new"> 
</item> 
<item android:id="@+id/search" 
     android:title="@string/search" 
     android:icon="@drawable/search"> 
     <menu> 
     <item android:id="@+id/five" 
     android:title="@string/five"> 
     </item> 
     <item android:id="@+id/ten" 
     android:title="@string/ten"> 
     </item> 
     <item android:id="@+id/fifteen" 
     android:title="@string/fifteen"> 
     </item> 
     <item android:id="@+id/restaurant" 
     android:title="@string/restaurant"> 
     </item> 
     <item android:id="@+id/cafe" 
     android:title="@string/cafe"> 
     </item> 
     <item android:id="@+id/sandwich" 
     android:title="@string/sandwich"> 
     </item> 
     </menu> 
</item> 
<item android:id="@+id/info" 
     android:title="@string/info_short" 
     android:icon="@drawable/info"> 
</item> 

然後在我的活動課,我有:

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

和:

// Create cases for each menu selection. 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.new_entry: 
      createFood(); 
      return true; 
     case R.id.search: 
      return true; 
     case R.id.cafe: 
      Log.d(TAG, "In Cafe SubMenu"); 
      Toast.makeText(getApplicationContext(), TAG, Toast.LENGTH_SHORT); 
      return true; 
     case R.id.info: 
      info(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

「onOptionsItemSelected」中的每個例子都做它應該做的事情,除了「case R.id.cafe:」這是子菜單。在這裏它應該發佈到LogCat和一個Toast進行測試,但是都沒有。

我缺少什麼?

感謝

回答

2

我曾嘗試你的代碼,它是可以正常使用。當我選擇'咖啡廳'時,只有烤麪包不顯示。這是因爲你沒有在代碼中調用show()。您的代碼是

Toast.makeText(getApplicationContext(), TAG, Toast.LENGTH_SHORT); 

上顯示運行時的敬酒應該調用如下

Toast.makeText(getApplicationContext(), TAG, Toast.LENGTH_SHORT).show(); 

:)

0

我想你應該刪除下面幾行:

case R.id.search: 
    return true; 
相關問題