2017-03-14 31 views
1
relativeLayout.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) {     
       if(keyCode == KeyEvent.KEYCODE_BACK) {    
         do....something     
       } 
       return false; 
      } 

}如何处理返回按钮在自定义视图中在android中?

此代码无效。当我按下后退按钮时,它不显示任何响应。请任何人帮助我。在此先感谢......

+0

我的意思是硬件按键事件(设备后退按钮)。有没有办法处理后退按钮在自定义视图中按 – Dev

+0

您可能需要[通过其容器将其委托给自定义视图,该容器也是自定义视图](https://github.com/Zhuinden/flow- sample/blob/1.0/src/main/java/com/example/flow/MainActivity.java#L134) – EpicPandaForce

回答

2

你几乎在那里,但这是你需要做的事。

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; 
     } 
    }); 
+0

@Athira,它显示错误'无法在getView中解析方法' – Dev

+0

这意味着您的自定义视图。我现在编辑了答案,请检查。 –

+0

它的工作感谢您的帮助 – Dev

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根据您的需要重写方法。

+0

你不需要为这个事件添加任何监听器,只需在活动中覆盖此方法 –

+0

我已经使用此代码,但它不工作 – Dev

相关问题