android – 如何在对话框关闭时隐藏键盘

综合技术 2019-01-12 阅读原文

我有一个单片段活动.片段上有一个EditText.

一旦片段显示,键盘就会弹出,但是我设法在清单android中阻止它设置:windowSoftInputMode =“stateHidden”

但是,还有一个按钮,用于打开另一个EditText的对话框.

我有一个方法,在对话框关闭时自动关闭键盘.

public static void closeInput(final View caller) {      
    caller.post(new Runnable() {
        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) caller.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(caller.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
        }
    });
}

该方法不是很糟糕,并且有一些问题. Dialog的EditText有inputType =“numberDecimal”. closeInput()似乎没有关闭键盘,只是将其更改为默认的字母状态.

这里发生了什么?

在我的情况下,我使用的方法:

public static void closeInput(final View caller) {  
    caller.postDelayed(new Runnable() {
        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) caller.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(caller.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }, 100);
}

由于Manifest中的活动设置,它拒绝正常工作,如果我记得你不能有android:windowSoftInputMode =“any_of_these”设置

翻译自:https://stackoverflow.com/questions/16106486/how-to-hide-keyboard-on-dialog-dismiss

责编内容by:代码日志 【阅读原文】。感谢您的支持!