为了账号安全,请及时绑定邮箱和手机立即绑定

从软键盘拦截后退按钮

从软键盘拦截后退按钮

慕妹3242003 2019-08-26 18:58:10
从软键盘拦截后退按钮我有几个输入字段的活动。当活动开始时,显示软键盘。当按下后退按钮软键盘关闭并关闭活动时,我需要再次按下后退按钮。所以问题是:是否有可能拦截后退按钮关闭软键盘并在一次按下后退按钮完成活动而不创建自定义InputMethodService?PS我知道如何在其他情况下拦截后退按钮:onKeyDown()或者onBackPressed()在这种情况下它不起作用:只有第二次按下后退按钮被拦截。
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

我发现,覆盖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);
    }}


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 400 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信