【问题标题】:Android - MaterialDrawer when bakc press go back activity instead closing drawerAndroid - 当bakc按下返回活动而不是关闭抽屉时的MaterialDrawer
【发布时间】:2019-12-30 11:05:32
【问题描述】:

我使用 MaterialDrawer 来自: https://github.com/mikepenz/MaterialDrawer

当用户按下后退按钮时,应用程序会后退一个活动,而不是仅仅关闭抽屉。

这是一个错误还是有办法修复它?

【问题讨论】:

  • 发布您的代码,我们可以帮助您。

标签: android navigation-drawer drawer materialdrawer


【解决方案1】:

这是预期的行为。如果要在后按时关闭抽屉,则必须覆盖 onBackPressed() 函数。

首先获取您的 DrawerLayout 的引用:

DrawerLayout myDrawer = (DrawerLayout) findViewById(R.id.my_drawer);

然后重写 onBackPressed() 函数以在抽屉打开而不是关闭活动时关闭它:

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

希望对你有帮助。

【讨论】:

    【解决方案2】:

    如果抽屉在按下返回按钮时打开,只需关闭抽屉

    @override
    public void onBackPressed(){
      //DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
      DrawerLayout drawerLayout = result.getDrawerLayout();      
      if(drawerLayout.isDrawerOpen(GravityCompat.START)) {
        //drawer is open
        drawerLayout.closeDrawer(GravityCompat.START); 
        //result.closeDrawer();     
      }
    }
    

    【讨论】:

    • 不工作。这就是为什么我提到我使用github.com/mikepenz/MaterialDrawer抽屉而不是常规的android抽屉,因为这个库中没有drawer_layout对象
    • result.closeDrawer();可以解决你的问题。其中 result 是 Drawer 的一个对象。
    • edited now check,但只需确保在“结果”之后键入后会出现什么。用于检查抽屉是否打开。尝试改变 if 条件。
    猜你喜欢
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多