如何在android中的活动中使用DrawerLayout时处理Back按钮?

时间:2013-10-21 09:51:20

标签: android drawerlayout

我在我的应用程序中使用DrawerLayout。现在,当我首先按下后退按钮时,它正在关闭DrawerLayout并需要再次单击后退按钮,然后它将重定向到上一个屏幕。

但我想避免这个DrawerLayout关闭后退按钮。任何人都知道如何防止这种情况吗?

请告诉我我被困在这个方面。

提前致谢。

5 个答案:

答案 0 :(得分:5)

DrawerLayout拦截默认onKeyDownonKeyUp,因此只需创建从DrawerLayout扩展的新类并覆盖此方法

类似的东西:

import android.content.Context;
import android.support.v4.widget.DrawerLayout;
import android.util.AttributeSet;
import android.view.KeyEvent;

public class MyDrawerLayout extends DrawerLayout {

    public MyDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public MyDrawerLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyDrawerLayout(Context context) {
        super(context);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            return false;
        }
        return super.onKeyUp(keyCode, event);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }   
}

答案 1 :(得分:3)

只需使抽屉不可聚焦,它就不会再拦截后退按钮了:

mDrawerLayout.setFocusable(false);

答案 2 :(得分:0)

试试幻灯片活动你可以轻松处理后退键 : https://github.com/jfeinstein10/SlidingMenu

答案 3 :(得分:0)

使用

@Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
    }

或者只是在keydown事件中调用super.onBackPressed()。

答案 4 :(得分:-2)

单击后退按钮

时使用finish()功能