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中获取焦点及弹出软键盘逻辑代码

你可能感兴趣的:(dialog弹框点击确定后,Edittext能获取焦点,软键盘无法弹出解决方案)