如何在安卓自定义视图中处理返回按钮按下事件?

3
 relativeLayout.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {                
                if( keyCode == KeyEvent.KEYCODE_BACK) {               
                       do....something                   
                }
                return false;
            }

这段代码无法正常工作。当我按下后退按钮时,它没有任何响应。请有人帮助我。先谢谢了......


我的意思是硬件按键事件(设备的返回按钮)。有没有办法在自定义视图中处理返回按钮的按下事件? - Dev
您可能需要通过其容器将其委托给自定义视图,该容器也是一个自定义视图。 - EpicPandaForce
2个回答

5
你已经接近成功了,但这正是你需要做的。
relativeLayout.setFocusableInTouchMode(true);
relativeLayout.requestFocus();
relativeLayout.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {

         if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
                if(You have handled the back press in your View){ return true; }
                return false;
        }
    });

@Athira,它显示了一个错误:“无法解析方法getView”。 - Dev
这意味着你的自定义视图。我已经编辑了答案,请检查一下。 - Aritra Roy

0
@Override
 public boolean onKeyDown(int keyCode, KeyEvent event)  {
if (Integer.parseInt(android.os.Build.VERSION.SDK) > 5
        && keyCode == KeyEvent.KEYCODE_BACK
        && event.getRepeatCount() == 0) {
    Log.d("CDA", "onKeyDown Called");
   // do stuff on back key press event
    return true; 
}
return super.onKeyDown(keyCode, event);

}

根据你的需求,你可以使用onkeyup重写方法。


你不需要为这个事件添加任何监听器,只需在活动中重写这个方法即可。 - Keyur Thumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接