2013-10-21 93 views
0

我在我的应用程序中使用DrawerLayout。现在,当我按下后退按钮首先关闭DrawerLayout并需要再次点击后退按钮时,它将重定向到前一个屏幕。如何在Android中的活动中使用DrawerLayout时处理后退按钮?

但我想避免这DrawerLayout关闭后退按钮。任何人都可以知道如何防止这一点?

请给我建议,我坚持这一点。

在此先感谢。

+0

它的默认功能,那么为什么你需要重写? – Raghunandan

+0

由于我的应用需求。 :( – anddev

回答

-2

使用面漆()函数的返回按钮

+0

我使用DrawerLayout,为此我需要使用Fragment,我想处理DrawerLayout不活动。当我按下Back按钮时,第二次调用OnBackPressed。在此之前,当我预先设置Back按钮时,抽屉会关闭。想做 – anddev

4

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); 
    } 
} 
3

只是要抽屉非可聚焦,它不会再截获后退按钮:

mDrawerLayout.setFocusable(false); 
0

使用

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

或者干脆keydown事件调用super.onBackPressed()。