2015-11-28 2 views
0

У меня есть этот XML.NavigationView Selected Item

<?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(); 
     } 

ответ

0

Я не думаю, что гнездятся предметы, как ваш код не допускается.

Если вы любите ниже, он может работать:

<group android:checkableBehavior="single"> 
    <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" /> 
</group> 
+0

ли я все еще быть в состоянии добавить заголовок, если я это сделать? –