android - 如何在android中使用onBackPressed

标签 android

在我的应用程序中,我使用了抽屉导航菜单。当用户点击后退按钮时,我需要关闭此菜单并返回到之前的 Activity 。

我写了下面的代码:

@Override
public void onBackPressed() {
    if (toNightSearchView.isSearchOpen()) {
        toNightSearchView.closeSearch();
    } else if (toNightDrawerLayout.isShown()) {
        toNightDrawerLayout.closeDrawer(Gravity.END);
    } else {
        super.onBackPressed();
    }
}

问题是当菜单关闭时,应用程序不会返回到之前的 Activity 。

我该如何解决这个问题?

最佳答案

// use `isOpen()` to check the drawer state
if (toNightSearchView.isSearchOpen() || toNightDrawerLayout.isOpen()) { 

   //close if any of the views are open
    if (toNightSearchView.isSearchOpen()) 
       toNightSearchView.closeSearch(); 
    if (toNightDrawerLayout.isOpen()) 
       toNightDrawerLayout.closeDrawer(Gravity.END); 

      // Gravity.END is used for closing right drawer and start for left one
} else{ 
     super.onBackPressed(); // go back to previous activity 
}

或者更好地使用isDrawerOpen

if (toNightSearchView.isSearchOpen() || toNightDrawerLayout.isDrawerOpen(Gravity.START)) { 

    if (toNightSearchView.isSearchOpen()) 
       toNightSearchView.closeSearch(); 
    if (toNightDrawerLayout.isDrawerOpen(Gravity.START)) 
       toNightDrawerLayout.closeDrawer(Gravity.START); 
} else{ 
     super.onBackPressed(); // go back to previous activity 
}

关于android - 如何在android中使用onBackPressed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44988974/

相关文章:

android - 在 Xamarin Forms 中处理不同设备尺寸的缩放

java - Inputlistener 不处理 actor 的输入

android - OnClick 方法不启动新 Activity

java - 非 Activity 类或 RecyclerView 适配器类中的 SharedPreference

android - HTML 5 自动播放 Google Chrome Android 不播放

java - 如果墙纸是从另一个应用程序设置的,如何停止服务

android - 如何构建一个简单的 Android 小部件

android - Mac OS Flutter 构建 appbundle 失败 : Invalid keystore format

java - Android 操作栏崩溃

android - ListView 项目不显示点击动画