Dialog 关闭后 EditText 不显示软键盘

EditText not showing soft keyboard after Dialog closed

我的应用程序中有一个填满 EditText 的表单。在表单中间的某处,有一个日期选择器对话框 (See here)。用户可以通过点击软键盘上的 "next" 按钮从 EditText 转到 EditText。当用户到达日期选择器时,键盘关闭并显示对话框。当用户选择一个日期时,我希望表单中的下一个 EditText 获得焦点并再次显示键盘。

我目前的情况是日期已设置,对话框已关闭,下一个 EditText 获得焦点并显示光标,但键盘不会打开。我尝试了各种方法来尝试打开键盘,但 none 似乎有效。这是我的一些代码

RelativeLayout next = rows.get(currentRow);
next.requestFocus();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

在这里,我从 RelativeLayouts (rows) 列表中获取下一个 RelativeLayout。我请求聚焦这一行,然后我要求打开软键盘。这不起作用。

我也试过这个,在我的 EditText 中 onFocusChangedListener:

@Override
public void onFocusChange(View v, boolean hasFocus) {
...
String s = text.getText().toString().trim();
if (hasFocus){
    ...
    imm.showSoftInput((EditText)v, InputMethodManager.SHOW_IMPLICIT);
}

您是否尝试在 activity 清单文件中添加以下内容?

android:windowSoftInputMode="stateAlwaysVisible"

这将使您的键盘在 activity 中始终可见。

也许这是一个迟到的答案,但我的应用程序遇到了类似的问题。在我的应用程序中有一些 editText 元素和一个弹出警告对话框的取消按钮(带有消息你确定要取消吗?)。关闭对话框后,即使光标位于 editText 中,键盘也不会出现。所以我创建了两个 Runnable 实例(一个用于明确焦点,一个用于请求焦点元素)并在需要时调用它们。例如。当对话框出现时调用清除焦点,当消失时调用请求焦点之一。最后它对我有用。