2017-04-12 154 views
0

我是android的初學者。我想創建一個導航菜單抽屜。當我點擊圖標時,它會打開。當我點擊菜單項時,它會顯示片段。但是當我點擊菜單項時,我的導航抽屜不會自動關閉。每次我關閉導航抽屜來查看我的片段。我不知道要在哪裏更改我的編碼?因此,我附加了我的MainActivity.java,activity_main.xml。任何人都請幫助我。我的導航點擊菜單項後抽屜不關閉?

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/drawer_layout" 
    tools:context="com.example.yuvi.navdrawermanual.MainActivity"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:textAlignment="center" 
     android:orientation="vertical"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/main_msg" 
      android:textSize="20dp" 
      android:textAlignment="center" 
      android:text="@string/main_layout"/> 
     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/frame_container"> 
     </FrameLayout> 
    </LinearLayout> 

    <android.support.design.widget.NavigationView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:id="@+id/main_drawer" 
     app:menu="@menu/navigation_menu" 
     android:layout_gravity="start"> 
    </android.support.design.widget.NavigationView> 
</android.support.v4.widget.DrawerLayout> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 
    private DrawerLayout mDrawerLayout; 
    private ActionBarDrawerToggle mToggle; 
    private NavigationView navigationView; 
    private android.app.FragmentTransaction fragmentTransaction; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mDrawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout); 
     mToggle=new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close); 
     navigationView=(NavigationView) findViewById(R.id.main_drawer); 

     mDrawerLayout.addDrawerListener(mToggle); 
     mToggle.syncState(); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
       int id=item.getItemId(); 
       android.app.FragmentManager fragmentManager= getFragmentManager(); 
       if(id==R.id.nav_acc){ 
        fragmentManager.beginTransaction().replace(R.id.frame_container,new FirstFragment()).commit(); 
       } 
       else if(id==R.id.nav_set){ 
        fragmentManager.beginTransaction().replace(R.id.frame_container,new SecondFragment()).commit(); 
       } 
       else if(id==R.id.nav_logout){ 
        fragmentManager.beginTransaction().replace(R.id.frame_container,new ThirdFragment()).commit(); 
       } 
       return false; 
      } 
     }); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if(mToggle.onOptionsItemSelected(item)){ 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

使用closeDrawers() – AbhayBohra

+0

謝謝....... – user3661367

回答

2

,就把這行:

mDrawerLayout.closeDrawer(GravityCompat.START); 

後:

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
       int id=item.getItemId(); 
    /*-------------------HERE--------------------*/ 
+0

謝謝..我現在得到了一個輸出.. – user3661367