我有一个 Activity ,其中整个屏幕专门用于发送一条消息。作为上半部分的一个 EditText,而 SoftKeyboard 在下半部分始终可见。 当我按下返回键时,SoftKeyboard 会隐藏,我必须再次按下返回键才能离开 Activity 。
我正在努力获得的行为是:当我按下后退按钮时立即完成 Activity ,而不是隐藏键盘。 例如,在编写新推文时,您可以在 Twitter 应用程序中找到此行为。
我尝试覆盖 onBackPressed() 函数,但似乎当键盘可见时,该函数未被调用。
@Override
public void onBackPressed() {
finish();
}
非常感谢任何帮助!
最佳答案
所以在尝试了很多东西之后,这里有一些有用的东西:
继承 EditText 并覆盖 onKeyPreIme() 函数以发送回叫。 这是子类的代码:
OnKeyPreImeListener onKeyPreImeListener;
public void setOnKeyPreImeListener(OnKeyPreImeListener onKeyPreImeListener) {
this.onKeyPreImeListener = onKeyPreImeListener;
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
if(onKeyPreImeListener != null)
onKeyPreImeListener.onBackPressed();
Log.d(TAG, "HIDING KEYBOARD");
return false;
}
return super.dispatchKeyEvent(event);
}
public interface OnKeyPreImeListener {
void onBackPressed();
}
然后在您的每个 TextView Activity 中:
EditTextGraphee.OnKeyPreImeListener onKeyPreImeListener =
new EditTextGraphee.OnKeyPreImeListener() {
@Override
public void onBackPressed() {
Log.d(TAG, "CALL BACK RECEIVED");
MyActivity.this.onBackPressed();
}
};
editText.setOnKeyPreImeListener(onKeyPreImeListener);
关于java - 如何使用 onBackPressed() 可见的 SoftKeyboard 完成 () Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672665/