我有一个活动,整个屏幕专用于发送一条消息.上半部分为一个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()活动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)