我在我的应用程序中使用了导航抽屉。当用户点击其中的任何一个项目时,它将转到另一个活动,但是当用户返回到抽屉页面时,它仍然是打开状态。如何在单击其项目后关闭该抽屉。
我在我的应用程序中使用了导航抽屉。当用户点击其中的任何一个项目时,它将转到另一个活动,但是当用户返回到抽屉页面时,它仍然是打开状态。如何在单击其项目后关闭该抽屉。
drawerLayout.closeDrawers();
在跳转至其他活动前关闭NavigationDrawer
。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);
}
}
使用closeDrawer()
方法关闭抽屉并在侦听器上启动其他活动。
例如:
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
//Start your activity
}
我认为你错过了closeDrawer()
方法,只需要在导航项Intent
的点击事件中调用此方法,然后再启动其他操作即可。
drawerLayout.closeDrawer(GravityCompat.END);
@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();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
//write your if logic here
drawer.closeDrawer(GravityCompat.START,true);
return false;
}
可能导航视图不在前面。尝试通过mNavigationView.bringToFront();
将其置于前面。