私はこのXMLを持っています。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:checked="true"
android:icon="@drawable/ic_home_black_24dp"
android:title="Home" />
<item
android:id="@+id/nav_search"
android:icon="@drawable/ic_search_black"
android:title="Search Location" />
<item
android:id="@+id/nav_fav"
android:icon="@drawable/ic_favorite"
android:title="Favorites" />
<item
android:id="@+id/nav_recent"
android:icon="@drawable/ic_nav_route"
android:title="Recent Location" />
<item
android:id="@+id/nav_route"
android:icon="@drawable/ic_place"
android:title="Route" />
</group>
<item android:title="Others">
<menu>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings"
android:title="Settings" />
<item
android:id="@+id/nav_about"
android:icon="@android:drawable/ic_menu_send"
android:title="About" />
</menu>
</item>
</menu>
ただし、nav_settings を選択すると、
この項目はチェックされません。
この項目は、上記の他の項目と同じようにチェックする必要があります。
これは、チェックされたアイテムを設定するための私のコードです。
フラグメントは問題なく動作します。
しかし、nav_settings のセレクターは機能しませんでした..
public void selectDrawerItem(MenuItem menuItem) {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
Fragment fragment = null;
Class fragmentClass;
switch(menuItem.getItemId()) {
case R.id.nav_home:
fragmentClass = FragmentMap.class;
setTitle("Map");
break;
case R.id.nav_search:
fragmentClass = FragmentSearchLoc.class;
Global.setCurrentItem =2;
break;
case R.id.nav_recent:
fragmentClass = FragmentSearchLoc.class;
Global.setCurrentItem =0;
break;
case R.id.nav_fav:
fragmentClass = FragmentSearchLoc.class;
Global.setCurrentItem =1;
break;
case R.id.nav_route:
fragmentClass = FragmentRoute.class;
setTitle("Routing");
break;
case R.id.nav_settings:
fragmentClass = FragmentSettings.class;
setTitle("Settings");
break;
default:
fragmentClass = FragmentMap.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit();
drawer
menuItem.setChecked(true);
drawer.closeDrawers();
}