dialog弹框点击确定后,Edittext能获取焦点,软键盘无法弹出解决方案

需求中需要点击按钮弹出dialog对话框,在点击确定后焦点自动定位到Edittext中并弹出软键盘,开始把获取焦点并弹出软键盘代码写在确认按钮OnClickListener中,但只能自动获取焦点,软键盘无法弹出,废了好大半天也没搞出来,后来采用handler传递机制完美解决,具体原理不太清楚,有知道的可以私信我这个Android渣渣,不胜感激

        tv_confirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mdialog.dismiss();
//                必须采用handler传递,否则导致键盘无法弹出
                handler.sendEmptyMessage(100);

            }
        });

上边为点击dialog的确认按钮逻辑

  Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 100:
                    edit2.setVisibility(View.VISIBLE);
                    edit2.setHint("wweeee");
                    edit2.setFocusable(true);
                    edit2.setFocusableInTouchMode(true);
                    edit2.requestFocus();

                    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
                    InputMethodManager imm = (InputMethodManager) getSystemService(FoucsAnSoftinputActivity.this.INPUT_METHOD_SERVICE);
                    imm.showSoftInput(edit2, 0);
                    break;
            }
        }
    };

上边为handler中获取焦点及弹出软键盘逻辑代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值