如何让虚拟键盘消失?

时间:2013-06-13 19:06:56

标签: java android

我的AlertDialog弹出窗口中有一个EditBox。当AlertDialog弹出时,我让它弹出虚拟键盘(所以我不需要点击那个白色字段来显示键盘),这样:

InputMethodManager imm = (InputMethodManager)
            Asocijacije.this.getSystemService(Context.INPUT_METHOD_SERVICE);

            if (imm != null){
            imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
            }

但是当我完成输入时,我需要在键盘上单击“完成”,然后在AlertDialog中单击“确定”。问题是,用户在完成输入后直接进入“确定”按钮,单击“确定”后,虚拟键盘将保持在屏幕上。他们现在必须单击他们设备上的后退按钮。按下确定按钮后如何清除键盘?

这是我的整个AlertDialog代码,如果它有帮助:

case R.id.bKonacno:

                        }

                LayoutInflater layoutInflaterK = LayoutInflater.from(context);  
                View promptViewK = layoutInflaterK.inflate(R.layout.popup_answer, null);
                AlertDialog.Builder alertDialogBuilderK = new AlertDialog.Builder(context);
                // set prompts.xml to be the layout file of the alertdialog builder
                alertDialogBuilderK.setView(promptViewK);
                final EditText inputK = (EditText)promptViewK.findViewById(R.id.userInput);

                InputMethodManager imm = (InputMethodManager)
                Asocijacije.this.getSystemService(Context.INPUT_METHOD_SERVICE);

                if (imm != null){
                imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
                }

                alertDialogBuilderK
                                        .setCancelable(false)
                                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                                                    public void onClick(DialogInterface dialog, int id) {
                                                        // get user input and set it to result

                                                        //some code of mine
                                                    }
                                                })
                                        .setNegativeButton("Cancel",
                                                new DialogInterface.OnClickListener() {
                                                    public void onClick(DialogInterface dialog, int id) {
                                                        dialog.cancel();
                                                    }
                                               });
                                // create an alert dialog

                                AlertDialog alertK = alertDialogBuilderK.create();
                                alertK.show();

                                break;

enter image description here

2 个答案:

答案 0 :(得分:1)

按下Ok / Cancel按钮后,您可以执行以下操作。

InputMethodManager imm = (InputMethodManager)getSystemService(
      Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

阅读Close/hide the Android Soft Keyboard了解更多信息。希望能帮助到你。

答案 1 :(得分:0)

尝试将以下内容添加到按钮中:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);