在当前的Activity弹出输入法框的时候,按下返回键,输入框消失,而不会退出当前的Activity,在有些时候,我们可能需要退出当前的Activity,可以重写dispatchKeyEventPreIme()方法来做到这一点:
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
Activity a = getActivity();
if (null != a && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
return super.dispatchKeyEventPreIme(event);
} else if (event.getAction() == KeyEvent.ACTION_UP) {
hideInputMethod();
a.finish();
return true;
}
}
return super.dispatchKeyEventPreIme(event);
}
隐藏输入法:
protected void hideInputMethod() {
InputMethodManager imm = (InputMethodManager)getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
if (null != imm) {
imm.hideStatusIcon(getWindowToken());
}
}
获取到Activity"
private Activity getActivity() {
Context c = getContext();
if (c != null && c instanceof Activity) {
return (Activity)c;
}
return null;
}