关闭 dialogFragment 时键盘未关闭
Posted
技术标签:
【中文标题】关闭 dialogFragment 时键盘未关闭【英文标题】:Keyboard not closing when dismiss the dialogFragment 【发布时间】:2020-01-03 09:29:17 【问题描述】:我有一个片段用于显示地图。从这个片段中,我打开另一个具有editText 的对话框片段。单击editText时,键盘会打开,但是当我在没有先关闭键盘的情况下关闭dialogFragment时,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 函数中。
【问题讨论】:
【参考方案1】:我也遇到了同样的问题,发现和manifest中定义的windowSoftInput有关。从活动中删除android:windowSoftInputMode="stateHidden"
后,它起作用了。
【讨论】:
【参考方案2】:试试这个
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())
【讨论】:
【参考方案3】:只要把它放在你的全局类中,你就可以在任何地方访问
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);
【讨论】:
已经尝试不工作......我通过了活动上下文,但没有解决方案。以上是关于关闭 dialogFragment 时键盘未关闭的主要内容,如果未能解决你的问题,请参考以下文章
如果未关闭键盘,则在使用搜索栏时进行 segueing 会更改目标视图控制器布局