2013-05-18 94 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> 

这里的顺序并不重要,因为这个菜单是唯一一个我需要通过看物理菜单按钮。