2011-12-12 12 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> 
私のActivityクラスで次に

私が持っている:

// 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).show(); 

:)

を次のように呼び出す必要があり、実行時にトーストを表示する

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

です

0

は、私はあなたが以下の行を削除すべきだと思う:

case R.id.search: 
    return true; 
関連する問題