2015-11-28 79 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

是否仍然可以,如果我這樣做是爲了添加標題? –