我有一个片段,用来显示地图。从这个片段中,我打开另一个具有editText的对话框片段。在单击editText时,键盘会打开,但是当我在不先关闭键盘的情况下关闭了dialogFragment时,dialogFragment会关闭,但键盘仍保持打开状态。然后再次触摸键盘关闭的任何位置。在关闭对话框片段时如何关闭键盘。
我已经尝试过:
android:windowSoftInputMode="stateAlwaysHidden"
处于活动状态。
也尝试过:
InputMethodManager imm =
(InputMethodManager) messageEditTxt.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive())
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
在onDismiss函数中。
答案 0 :(得分:0)
尝试一下
public static void hideSoftKeyboard(Context context, View view) {
try {
InputMethodManager inputMethodManager =
(InputMethodManager) context.getSystemService(
Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(
view.getWindowToken(), 0);
} catch (Exception e) {
e.printStackTrace();
}
}
用法
hideSoftKeyboard(getActivity(), getView())
答案 1 :(得分:0)
只需将其放在您的全局类中,您就可以在任何地方访问
public static void hideKeyboard(Activity activity) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
//Find the currently focused view, so we can grab the correct window token from it.
View view = activity.getCurrentFocus();
//If no view currently has focus, create a new one, just so we can grab a window token from it
if (view == null) {
view = new View(activity);
}
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
活动-:
GlobalClass.hideSoftKeyborad(MainActivity.this);
对于片段-
GlobalClass.hideSoftKeyborad(getActivity);
答案 2 :(得分:0)
我遇到了同样的问题,发现它与清单中定义的windowSoftInput有关。从活动中删除android:windowSoftInputMode="stateHidden"
后,它可以正常工作。