Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让虚拟键盘消失?_Java_Android - Fatal编程技术网

Java 如何让虚拟键盘消失?

Java 如何让虚拟键盘消失?,java,android,Java,Android,我的AlertDialog弹出窗口中有一个编辑框。我让它在AlertDialog弹出时弹出虚拟键盘(这样我就不需要点击白色区域来显示键盘),方法如下: InputMethodManager imm = (InputMethodManager) Asocijacije.this.getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null){ imm.togg

我的AlertDialog弹出窗口中有一个编辑框。我让它在AlertDialog弹出时弹出虚拟键盘(这样我就不需要点击白色区域来显示键盘),方法如下:

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

            if (imm != null){
            imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
            }
但当我完成输入后,我需要单击键盘上的“完成”,然后在AlertDialog中单击OK。问题是,用户一旦完成输入,就直接转到OK按钮,单击OK后,虚拟键盘仍保持在屏幕上。他们现在必须单击设备上的“后退”按钮。按下OK按钮后如何清除键盘

以下是我的全部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;

当按下
确定
/
取消
按钮时,您可以执行以下操作

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

阅读更多。希望能有帮助

当按下
确定
/
取消
按钮时,您可以执行以下操作

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

阅读更多。希望能有帮助

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

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

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

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

不,这不起作用。我将此代码放在“确定”按钮中,但键盘仍在这里。您说您在键盘上单击“完成”,然后单击“确定”/取消
。AFAIKiIt最好在点击虚拟键盘时隐藏自己,而不必提及任何内容。是的,当我点击“完成”时,键盘就不见了。然后单击“确定”隐藏AlertDialog。我把你的代码放在ELSE语句的正上方。好吗?你试过把它放在
.setPositiveButton(“OK”,新的DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog,int-id)中吗{
?这就是我放它的地方…那条语句一直延伸到ELSE语句。但是,如果你把它放在底部或顶部,显然是不一样的。我不知道为什么。但是一旦我把它放在顶部,就在“public void onClick”下面它起作用了。谢谢。不,这不起作用。我把这个代码放在我的“确定”按钮中,键盘还在。你说你在键盘上单击“完成”,然后你单击“确定”/
Cancel
。AFAIKiIt应该在点击虚拟键盘时隐藏自己,而你什么都不提。是的,当我单击“完成”时yboard不见了。然后我单击“确定”隐藏AlertDialog。我将您的代码放在ELSE语句的正上方。这样好吗?您是否尝试将其放入
.setPositiveButton(“确定”,新建DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog,int-id){
?这就是我放它的地方…那句话一直到ELSE语句。但是,如果你把它放在底部或顶部,显然是不一样的。我不知道为什么。但是一旦我把它放在顶部,就在“public void onClick”下面,它就起作用了。谢谢。