android - 当用户按下后退按钮时隐藏抽屉导航

标签 android navigation navigation-drawer

我遵循了 Google 的官方开发者教程 here创建一个抽屉导航。

目前,一切正常,除了用户使用 Android 在屏幕底部提供的 native 后退按钮(以及主页和最近的应用程序按钮)。如果用户使用 native 返回按钮向后导航,抽屉导航仍将打开。如果用户使用 ActionBar 导航回来,抽屉导航将按我想要的方式关闭。

我的代码与官方教程几乎相同,除了我如何处理用户选择抽屉上的项目:

   mDrawerList.setOnItemClickListener(new ListView.OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView parent, View view, int position, long id)
        {
            switch(position)
            {
                case 0:
                {
                    Intent intent = new Intent(MainActivity.this, NextActivity.class);
                    startActivity(intent);
                }
            }
        }
    });

当用户使用 native 后退按钮导航返回时,如何关闭抽屉导航?任何建议表示赞赏。谢谢!

最佳答案

您必须覆盖 onBackPressed() .来自文档:

Called when the activity has detected the user's press of the back key. The default implementation simply finishes the current activity, but you can override this to do whatever you want.

所以你可以有这样的代码:

@Override
public void onBackPressed() {
    if (this.drawerLayout.isDrawerOpen(GravityCompat.START)) {
        this.drawerLayout.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

如果是打开的,这个方法会关闭它,否则回退到默认行为。

关于android - 当用户按下后退按钮时隐藏抽屉导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26833741/

相关文章:

java - 如何修复MainActivity? kotlin.UninitializedPropertyAccessException : lateinit property compositeDiposable has not been initialized

jquery - 使用箭头键突出显示 div 中的链接

android - 在 Firebase Cloud Messaging 上通过 XMPP 传送上游消息的误解

java - 在微调器中划分值 - Android

android - 无法解析方法 "getMapAsync"

android - 删除抽屉导航 Activity (主要)和其他所有 Activity 上的应用标签

java - 像 Gmail 应用程序一样的 Android Studio 抽屉导航

asp.net - 母版页是否知道正在显示哪个页面?

html - 使用导航 portlet 显示嵌套页面

java - 如何使用 Picasso 从 URL 更改抽屉导航中的汉堡菜单图标?