点击导航抽屉中的任何项目后关闭它。

4

我在我的应用程序中使用了导航抽屉。当用户点击其中的任何一个项目时,它将转到另一个活动,但是当用户返回到抽屉页面时,它仍然是打开状态。如何在单击其项目后关闭该抽屉。


在调用意图之前关闭抽屉。如需更多帮助,请发布您的代码。 - V-rund Puro-hit
我已经发布了解决方案,请尝试。如果仍然没有解决,请在此处发布您的代码。 - Vishal Thakkar
可能是重复的问题:如何在从导航抽屉中按下项目时关闭它? - Preet_Android
使用 DrawerLayout 的实例,并调用此函数 DrawerLayout.closeDrawers(); - Hassan Jamil
我正在使用一个单独的Java文件来处理抽屉的功能,问题是该Java文件在其XML中没有DrawerLayout,因此我无法在那里获取抽屉的引用。 - Piyush jain
7个回答

4
您可以使用drawerLayout.closeDrawers();在跳转至其他活动前关闭NavigationDrawer

3
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);
     }
 }

2

使用closeDrawer()方法关闭抽屉并在侦听器上启动其他活动。

例如:

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

    //Start your activity
}

0

我认为你错过了closeDrawer()方法,只需要在导航项Intent的点击事件中调用此方法,然后再启动其他操作即可。

 drawerLayout.closeDrawer(GravityCompat.END);

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

0
只需在onNavigationItemSelected()中添加closeDrawer(),即可在选择导航抽屉上的任何项目时关闭抽屉。
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    int id = item.getItemId();

    //write your if logic here

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

-1

可能导航视图不在前面。尝试通过mNavigationView.bringToFront();将其置于前面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接