AlertDialog在被解雇时专注于EditText ..导致键盘出现..该怎么办?

时间:2011-06-09 20:45:16

标签: android focus android-edittext alertdialog

当用户点击按钮时,我正在使用AlertDialog弹出并询问用户一些信息。

对话框工作正常,我得到了自己解散的用户信息。

然而,当应用程序将焦点返回到我的主视图时......它将焦点设置为EditText小部件,这会导致键盘显示在该视图中。

我不希望键盘出现,除非用户明确地将焦点放在该字段上,因此如何更改/覆盖默认行为,以便在解除AlertDialog后它不会在此字段上自动对焦。 / p>

当视图最初膨胀时,它不会以这种方式运行,该字段被聚焦(突出显示),但键盘不可见,只有在用户点击该字段后,键盘才会在应用程序启动时出现。对话解雇后的这种行为完全不同......有什么想法吗?

(没有EditText不在警报对话框的按钮附近,所以它不会像第二次点击或某事意外发生或点击正在向上传递。)

3 个答案:

答案 0 :(得分:2)

在解除对话框后尝试执行此操作:

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

答案 1 :(得分:2)

当您关闭对话框时,您可以要求InputMethodManager重新签名键盘:

EditText mValue; //The input view in your Dialog

//Close the keyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mValue.getWindowToken(), 0);

希望有帮助!

答案 2 :(得分:1)

问题如上面的评论中所述,我没有从ALERTDIALOG中解雇键盘,我正在做出错误的假设,即当对话框被解除时键盘也是如此。这个假设是错误的。

警报对话框的键盘未被关闭,视图返回到父视图,并且由于父视图中的编辑文本得到了焦点,因此键盘自动更新以便为此视图正确显示。

在对话框关闭侦听器中尝试解除键盘没有删除键盘,因为他们试图解除父窗口中字段的键盘,并且在执行时它仍然绑定到alertview中的字段。

将dismisskeyboard调用添加到onclick事件,该事件解除了alertDialog中edittext字段的拨出,解决了问题。