somerandomusername
somerandomusername

Reputation: 2023

Soft keyboard appears after Dialog is closed

Every time I have focus on some edit field and Dialog shows up, it will pull up soft keyboard as soon as I dismiss(); Dialog. I have tried every way to remove it after click event, but whatever I do it still shows up.

public static void hideSoftInput(FragmentActivity _activity){
    if(_activity.getCurrentFocus() != null){
        InputMethodManager inputManager = (InputMethodManager) _activity.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.hideSoftInputFromWindow(_activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}

public static void hideSoftInput(View _v, Context _c){
    if(_v.getWindowToken() != null){
        InputMethodManager inputManager = (InputMethodManager) _c.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.hideSoftInputFromWindow(_v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}

Upvotes: 0

Views: 437

Answers (1)

RowanPD
RowanPD

Reputation: 393

I can't find it now but someone else on here suggested to wrap the call to hide the keyboard in a postDelayed call.

It worked for me when many other options failed. The only thing is that it may give a funny jiggle of the screen because you will be suppressing the keyboard while it is trying to show. Without the postDelayed it seems it will try to hide the keyboard before Android tries to show it after the dialog has closed. So ultimately we have to fight a timing issue in Android.

Something like this:

view.postDelayed(new Runnable()
{
    @Override
    public void run()
    {
        hideKeyboard();
    }
}, 50);

Upvotes: 1

Related Questions