java - 如何使用 onBackPressed() 可见的 SoftKeyboard 完成 () Activity

标签 java android android-activity

我有一个 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/

相关文章:

java - 为什么更改用作 HashMap 中键的对象的哈希码会使查找返回 null?

c# - 应用程序不会在其他计算机上运行/打开

android - 如何在 Android NativeScript 应用程序上更改 TextView 底部强调色

Android 选项卡 - 禁用点击时在选项卡之间切换

android - AppCompatActivity 不可分配给 Activity

Java 计数功能不起作用。控制台应用程序数字数组

java - IOS APNs p12 证书文件不适用于 Java

java - 模拟辅助方法的返回值

android - Sony Xperia S (LT26i) 似乎没有显示复合绘图

Android Studio onStop() 中的数组