android 如何处理自定义视图中的后退按钮按下?
How to handle back button press in Custom View in android?
relativeLayout.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_BACK) {
do....something
}
return false;
}
}
此代码无效。当我按下后退按钮时,它没有显示任何响应。请任何人帮助我。提前致谢......
你快到了,但这正是你需要做的。
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;
}
});
@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覆盖方法。
relativeLayout.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_BACK) {
do....something
}
return false;
}
}
此代码无效。当我按下后退按钮时,它没有显示任何响应。请任何人帮助我。提前致谢......
你快到了,但这正是你需要做的。
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;
}
});
@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覆盖方法。