2016-04-06 7 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> 

、最初の項目(通常は)それがチェックされて示すために強調されています。これは私が起こりたいものです。次に、各項目が押されるたびに、強調表示がグループ内を移動するようにします。

問題がある:

  • 私は、ハイブリッドを押すと、私は衛星を押すと、ノーマルと衛星BOTHが

    をハイライト表示され、通常の遺骨がを強調し、ハイブリッドが 強調表示され、衛星がに戻りますそのチェックされていない状態。

実際にノーマルを押した後でのみ、チェック状態は正常に動作します。

私はアンドロイド:checked = "true"を削除し、コードでperformIdentifierActionを使用してみましたが、これはチェックされた状態を変更しませんでした。

答えて

0

申し訳ありませんが、メニューがNavigationViewで使用されていることを忘れていました。

navigationView.setCheckedItem(R.id.nav_map_type_normal); 

は、私が欲しいと正確に実行します。ここのコメントで見つけましたNavigation drawer: How do I set the selected item at startup?

0

NORMALをデフォルトのTRUEに設定しているので、Satellite、Hybrid、またはTerrainが選択されているときに、明示的にfalseに設定する必要があります。

現在のところ、nav_map_type_normalのonclickmenu選択コードで、NORMALをandroid:checked = falseに設定していると思います。つまり、基本的に のチェックを外すと、デフォルトではTRUEに設定されています。他のオプションが選択されている場合も同じ操作をしてください。

+0

別のオプションを押すたびに[標準]オプションをチェック(偽)するだけで動作するように表示されますが、実際にはコードを追加する必要はありません。私はそれがラジオボタンのグループであるかのように動作しなければならないと思います。この場合、ボタンは常に選択されます。 –

+0

はい、コードを追加せずに動作させるには、ここで説明しているようにRadioGroupとRadioButtonを使用する必要があります。http://developer.android.com/guide/topics/ui/controls/radiobutton.html –

関連する問題