java-如何使用onBackPressed()看到带有SoftKeyboard的活动的finish()活动

java-如何使用onBackPressed()看到带有SoftKeyboard的活动的finish()活动,第1张

概述我有一个活动,整个屏幕专用于发送一条消息.上半部分为一个EditText,而下半部分始终可见SoftKeyboard.当我按回去时,软键盘将隐藏,我必须再次按回去才能退出活动.我正在努力获得的行为是:当我按下后退按钮时立即完成活动,而不是隐藏键盘.例如,编写新的tweet时,您可以在twitter应用

我有一个活动,整个屏幕专用于发送一条消息.上半部分为一个EditText,而下半部分始终可见SoftKeyboard.
当我按回去时,软键盘将隐藏,我必须再次按回去才能退出活动.

我正在努力获得的行为是:当我按下后退按钮时立即完成活动,而不是隐藏键盘.
例如,编写新的tweet时,您可以在twitter应用程序中找到此行为.

我尝试覆盖onBackpressed()函数,但似乎当键盘可见时,未调用该函数.

@OverrIDepublic voID onBackpressed() {     finish();}

任何帮助将非常感激!

解决方法:

因此,在尝试了许多事情之后,这里的方法起作用了:

子类EditText并重写onKeyPreIme()函数以发送回叫.
这是子类的代码:

OnKeyPreImeListener onKeyPreImeListener;public voID setonKeyPreImeListener(OnKeyPreImeListener onKeyPreImeListener) {    this.onKeyPreImeListener = onKeyPreImeListener;}@OverrIDepublic 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:

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的活动的finish()活动全部内容,希望文章能够帮你解决java-如何使用onBackPressed()看到带有SoftKeyboard的活动的finish()活动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120493.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存