关闭对话框时键盘未关闭

时间:2019-08-30 06:17:55

标签: android android-fragments

我有一个片段,用来显示地图。从这个片段中,我打开另一个具有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函数中。

3 个答案:

答案 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"后,它可以正常工作。