2016-04-06 62 views
1

我正在嘗試檢查菜單組中的默認項目。我沒有改變使用代碼的菜單中的任何東西。在菜單組中檢查默認項目

菜單如下:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<item android:title="Map type"> 
    <menu> 
     <group 
      android:checkableBehavior="single" 
      > 
      <item 
       android:id="@+id/nav_map_type_normal" 
       android:title="Normal" 
       android:checked="true" 
       /> 
      <item 
       android:id="@+id/nav_map_type_satellite" 
       android:title="Satellite" 
       /> 
      <item 
       android:id="@+id/nav_map_type_terrain" 
       android:title="Terrain" 
       /> 
      <item 
       android:id="@+id/nav_map_type_hybrid" 
       android:title="Hybrid" 
       /> 
     </group> 
    </menu> 
</item> 

<item 
    android:id="@+id/nav_toggle_traffic" 
    android:title="Toggle traffic" 
    /> 

<item 
    android:id="@+id/nav_settings" 
    android:icon="@drawable/ic_settings" 
    android:title="@string/action_settings" 
    android:orderInCategory="100" 
    /> 

</menu> 

當首先顯示菜單時,第一項(普通)被突出顯示,以指示它被選中。這就是我想要發生的事情。然後我想要突出顯示在每個項目被按下時通過組。

的問題是:

  • 如果我按衛星,正常和衛星突出

    如果我再按混合,正常遺體強調,Hybrid是 高亮顯示,衛星恢復到其未經檢查的狀態。

只有在實際按下Normal之後,它的檢查狀態纔會像應該那樣工作。

我已經嘗試刪除android:checked =「true」並在代碼中使用performIdentifierAction,但這並未改變選中的狀態。

回答

0

由於您將NORMAL設置爲默認爲TRUE,因此在選擇Satellite,Hybrid或Terrain時,您需要明確地將其設置爲false。

我相信目前,您將在nav_map_type_normal的onclickmenu選擇代碼上將NORMAL設置爲android:checked = false。即你基本上是 取消它的檢查,默認情況下它被選爲TRUE。請在選擇其他選項時進行同樣的操作。

+0

我可以得到它似乎正在工作,只要將正常選項設置爲選中(錯誤)每當另一個選項被按下,但我真的希望它的工作,而不需要添加代碼。我認爲它**應該**就像是一組單選按鈕一樣,在這種情況下總會選擇一個按鈕。 –

+0

是的,如果你想在沒有添加代碼的情況下工作,你應該使用RadioGroup和RadioButtons,如下所述 - http://developer.android.com/guide/topics/ui/controls/radiobutton.html –