Piyush jain
Piyush jain

Reputation: 93

close navigation drawer after clicking on any of its item

I have used navigation drawer in my app. When user click any of its item it will go to another activity but when user comes back to the drawer page it is still open. How to close that drawer once its item is clicked.

Upvotes: 4

Views: 11442

Answers (7)

Ashif
Ashif

Reputation: 471

DrawerLayout mDrawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout)

closeDrawer(); // called when you want to close

  public void closeDrawer() 
  {
     if (mDrawerLayout.isDrawerOpen(GravityCompat.START))
     {
        mDrawerLayout.closeDrawer(GravityCompat.START);
     }
 }

Upvotes: 3

Sonu Sourav
Sonu Sourav

Reputation: 3504

Just add closeDrawer() inside onNavigationItemSelected() to close the drawer on selecting any item on Navigation Drawer.

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    int id = item.getItemId();

    //write your if logic here

    drawer.closeDrawer(GravityCompat.START,true);
    return false;
}

Upvotes: 0

Pavan K
Pavan K

Reputation: 1

Probably the navigation view is not in the front. Try getting it to front by mNavigationView.bringToFront();.

Upvotes: -1

Sahana Prabhakar
Sahana Prabhakar

Reputation: 581

Use closeDrawer() method to close the drawer and start your other activity on the listener of drawer.

For Example.

@Override
public void onDrawerClosed(View drawerView) {
    super.onDrawerClosed(drawerView);

    //Start your activity
}

Upvotes: 2

Vishal Thakkar
Vishal Thakkar

Reputation: 2127

 @SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) { 
int id = item.getItemId();
    // Create a new fragment and specify the fragment to show based on nav item clicked
    Fragment fragment = null;
    Class fragmentClass = null;
    if (id == R.id.nav_item1) {
        fragmentClass = home.class;
        // Handle the camera action
    } 
 DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
if(fragmentClass.newInstance() instanceof Fragment) {
            fragment = (Fragment) fragmentClass.newInstance();

            if (fragmentClass.getSimpleName().equals("home")) {

                // Insert the fragment by replacing any existing fragment
                FragmentManager fragmentManager = getSupportFragmentManager();

                fragmentManager.beginTransaction().replace(R.id.home_layout, fragment).commit();
                // Highlight the selected item has been done by NavigationView
                item.setChecked(true);
                // Set action bar title
                setTitle(item.getTitle());
                // Close the navigation drawer
                drawer.closeDrawers();
            }
        }

Upvotes: 0

N J
N J

Reputation: 27515

I think you missed closeDrawer() just call this method before launching other on click of Navigation Item Intent

 drawerLayout.closeDrawer(GravityCompat.END);

Upvotes: 0

Linh
Linh

Reputation: 60923

You can use drawerLayout.closeDrawers(); to close the NavigationDrawer before you go to another Activity

Upvotes: 4

Related Questions