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