0

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

但我想避免这种DrawerLayout关闭后退按钮。谁能知道如何防止这种情况?

请向我建议我坚持这一点的方式。

提前致谢。

4

5 回答 5

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);
    }   
}
于 2013-11-28T12:56:20.817 回答
4

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

mDrawerLayout.setFocusable(false);
于 2014-05-12T20:11:18.367 回答
0

利用

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

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

于 2015-01-20T20:18:45.280 回答
0

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

于 2013-10-21T09:53:10.053 回答
-2

在单击后退按钮时使用 finish() 函数

于 2013-10-21T10:14:43.837 回答