2013-05-18 95 views
1

我在設置ListActivity的ActionBar上有一個奇怪的問題。子菜單未顯示後的可選菜單項

下面是我用它來建立我的菜單中的XML:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
    android:id="@+id/menu_search" 
    android:title="@string/search_filter" 
    android:icon="@drawable/ic_search" 
    android:showAsAction="always|withText" /> 

<item 
    android:id="@+id/menu_start_date" 
    android:title="@string/date_filter" 
    android:showAsAction="always|withText" /> 

<item 
    android:id="@+id/menu_end_date" 
    android:title="@string/date_filter" 
    android:showAsAction="always|withText" /> 

<item 
    android:id="@+id/menu_filters" 
    android:title="@string/filters" 
    android:icon="@drawable/ic_filter" 
    android:showAsAction="always|withText"> 

    <menu> 
     <item 
      android:id="@+id/menu_ratings" 
      android:title="@string/ratings" 
      android:icon="@drawable/ic_star" 
      android:showAsAction="always|withText" /> 
     <item 
      android:id="@+id/menu_emotions" 
      android:title="@string/emotions" 
      android:icon="@drawable/ic_smi2" 
      android:showAsAction="always|withText" /> 
     <item 
      android:id="@+id/menu_categories" 
      android:title="@string/categories" 
      android:icon="@drawable/ic_folder" 
      android:showAsAction="always|withText" /> 
</menu> 

<item 
    android:id="@+id/menu_search_order" 
    android:title="@string/search_order"  
    android:icon="@drawable/ic_search_order" 
    android:showAsAction="ifRoom|withText" />  
</item> 

</menu> 

菜單項menu_searchmenu_start_datemenu_end_date和子菜單menu_filters運作良好,但無法從物理菜單拿到菜單menu_search_order按鈕(當我按下按鈕時沒有任何反應)。

所以我做了一個小測試,看看問題是否不從子菜單來了,我改變了代碼和註釋子菜單部分:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
    android:id="@+id/menu_search" 
    android:title="@string/search_filter" 
    android:icon="@drawable/ic_search" 
    android:showAsAction="always|withText" /> 

<item 
    android:id="@+id/menu_start_date" 
    android:title="@string/date_filter" 
    android:showAsAction="always|withText" /> 

<item 
    android:id="@+id/menu_end_date" 
    android:title="@string/date_filter" 
    android:showAsAction="always|withText" /> 

<item 
    android:id="@+id/menu_filters" 
    android:title="@string/filters" 
    android:icon="@drawable/ic_filter" 
    android:showAsAction="always|withText"> 

    <!-- <menu> 
     <item 
      android:id="@+id/menu_ratings" 
      android:title="@string/ratings" 
      android:icon="@drawable/ic_star" 
      android:showAsAction="always|withText" /> 
     <item 
      android:id="@+id/menu_emotions" 
      android:title="@string/emotions" 
      android:icon="@drawable/ic_smi2" 
      android:showAsAction="always|withText" /> 
     <item 
      android:id="@+id/menu_categories" 
      android:title="@string/categories" 
      android:icon="@drawable/ic_folder" 
      android:showAsAction="always|withText" /> 
</menu> --> 

<item 
    android:id="@+id/menu_search_order" 
    android:title="@string/search_order"  
    android:icon="@drawable/ic_search_order" 
    android:showAsAction="ifRoom|withText" />  
</item> 

</menu> 

此更改後,菜單運作良好,並選擇當我按下物理菜單按鈕時顯示。

所以我的問題是:爲什麼子菜單阻止我的最後一個菜單出現在第一個案例?

謝謝!

回答

1

我仍然不知道爲什麼我的問題中的代碼無法正常工作,但我發現了最終使其工作的技巧。

我只是提出我的可選菜單(最初在底部)的XML文件中的子菜單前:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
    android:id="@+id/menu_search" 
    android:title="@string/search_filter" 
    android:icon="@drawable/ic_search" 
    android:showAsAction="always|withText" /> 

<item 
    android:id="@+id/menu_start_date" 
    android:title="@string/date_filter" 
    android:showAsAction="always|withText" /> 

<item 
    android:id="@+id/menu_end_date" 
    android:title="@string/date_filter" 
    android:showAsAction="always|withText" /> 

<item 
    android:id="@+id/menu_search_order" 
    android:title="@string/search_order"  
    android:icon="@drawable/ic_search_order" 
    android:showAsAction="ifRoom|withText" /> 

<item 
    android:id="@+id/menu_filters" 
    android:title="@string/filters" 
    android:icon="@drawable/ic_filter" 
    android:showAsAction="always|withText"> 

<menu> 
     <item 
      android:id="@+id/menu_ratings" 
      android:title="@string/ratings" 
      android:icon="@drawable/ic_star" 
      android:showAsAction="always|withText" /> 
     <item 
      android:id="@+id/menu_emotions" 
      android:title="@string/emotions" 
      android:icon="@drawable/ic_smi2" 
      android:showAsAction="always|withText" /> 
     <item 
      android:id="@+id/menu_categories" 
      android:title="@string/categories" 
      android:icon="@drawable/ic_folder" 
      android:showAsAction="always|withText" /> 
</menu> 

</item> 

</menu> 

這裏的順序並不重要,因爲這個菜單是唯一一個我需要通過看物理菜單按鈕。