猿问

从软键盘拦截后退按钮

从软键盘拦截后退按钮

我有几个输入字段的活动。当活动开始时,显示软键盘。当按下后退按钮软键盘关闭并关闭活动时,我需要再次按下后退按钮。

所以问题是:是否有可能拦截后退按钮关闭软键盘并在一次按下后退按钮完成活动而不创建自定义InputMethodService

PS我知道如何在其他情况下拦截后退按钮:onKeyDown()或者onBackPressed()在这种情况下它不起作用:只有第二次按下后退按钮被拦截。


慕妹3242003
浏览 401回答 3
3回答

不负相思意

我发现,覆盖Layout类的dispatchKeyEventPreIme方法也很有效。只需将主Activity设置为属性并启动预定义方法即可。public class LinearLayoutGradient extends LinearLayout {     MainActivity a;     public void setMainActivity(MainActivity a) {         this.a = a;     }     @Override     public boolean dispatchKeyEventPreIme(KeyEvent event) {         if (a != null) {             InputMethodManager imm = (InputMethodManager) a                .getSystemService(Context.INPUT_METHOD_SERVICE);             if (imm.isActive() && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {                 a.launchMethod;             }         }         return super.dispatchKeyEventPreIme(event);     }}
随时随地看视频慕课网APP

相关分类

Android
我要回答