对话框关闭后隐藏软键盘

Dmy*_*nko 40 keyboard android hide soft-keyboard android-softkeyboard

我想在AlertDialog解雇后隐藏软键盘,但它仍然可见.这是我的代码:

alert = new AlertDialog.Builder(MyActivity.this);
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

alert.setOnDismissListener(new DialogInterface.OnDismissListener() {

    @Override
    public void onDismiss(DialogInterface dialog) {
        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
    }
});
Run Code Online (Sandbox Code Playgroud)

小智 89

Manifest xml中

android:windowSoftInputMode="stateAlwaysHidden"
Run Code Online (Sandbox Code Playgroud)

它会在Dismiss of上自动隐藏软键盘 Dialog

  • 它对我不起作用,但edittext隐藏(对话框内的edittext)和dialog.dismiss完成了这项工作 (4认同)
  • 这应该是公认的答案!覆盖AndroidManifest.xml中声明的属性是一种不好的做法 (2认同)

Nor*_*haw 15

我遇到了同样的问题.通过这样做解决了它.它不需要任何参考:

imm.hideSoftInputFromWindow(getWindow().getDecorView()
                .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
Run Code Online (Sandbox Code Playgroud)


Mii*_*nen 7

关闭警报对话框时遇到了类似的问题.这似乎对我有用.

在DialogFragment中

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

@Override
public void onDismiss(DialogInterface dialog)
{
    super.onDismiss(dialog);
            View view = getActivity().getCurrentFocus();
    if (view != null)
    {
        closeKB(view);
    }
}
Run Code Online (Sandbox Code Playgroud)


Sco*_*ris 5

我用这个方法:

IBinder token = searchTextEntry.getWindowToken();
( ( InputMethodManager ) getSystemService( Context.INPUT_METHOD_SERVICE ) ).hideSoftInputFromWindow( token, 0 );
Run Code Online (Sandbox Code Playgroud)

searchTextEntry我的EditText参考名称在哪里.