wake-up-neo.net

Softkey-Tastatur nach dem Dialog ausblenden schließen

Ich möchte die Soft-Tastatur nach dem Schließen von AlertDialog ausblenden, aber es ist immer noch sichtbar. Hier ist mein Code:

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);
    }
});
36

In Manifest XML  

Android:windowSoftInputMode="stateAlwaysHidden"

Die Soft-Tastatur wird beim Schließen von Dialog automatisch ausgeblendet.

76
Rajeshwar

Ich traf das gleiche Problem. So wurde es gelöst. Es braucht keine Referenz:

imm.hideSoftInputFromWindow(getWindow().getDecorView()
                .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
15
NordicShaw

Ich hatte ein ähnliches Problem beim Schließen eines Alarmdialogs. Dies scheint mir den Trick zu bringen.

In Ihrem 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);
    }
}
6
Miika Pakarinen

Ich verwende diese Methode:

IBinder token = searchTextEntry.getWindowToken();
( ( InputMethodManager ) getSystemService( Context.INPUT_METHOD_SERVICE ) ).hideSoftInputFromWindow( token, 0 );

Dabei ist searchTextEntry der Name meiner EditText-Referenz.

5
ScouseChris

Ich hatte Probleme mit all diesen Lösungen, aber wenn du mit einem Fragment arbeitest, per @ amal-dev-s-i in diesem Thread: Wie man die Tastatur im Dialogfeld ausblenden kann

Ich habe dies einfach zu meinem Fragment hinzugefügt und es hat funktioniert, nachdem im Dialogfeld dismiss () aufgerufen wurde:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)

Und ich hatte ähnliches Glück, als ich das Obige (Entfernen von getActivity ()) zu onResume () der übergeordneten Aktivität hinzufügte, wenn es sich um eine Aktivität handelt.

1
policenauts
protected void hideKeyboard() {
    final Activity activity = getActivity();
    final View view = activity != null ? activity.getCurrentFocus() : null;
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            if (view != null) {
                InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null)
                    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            }
        }
    }, 1);
}

@Override
public void onDismiss(DialogInterface dialog) {
    super.onDismiss(dialog);
    hideKeyboard();
}
1
Yusuf Yaşar

Das funktioniert! Dadurch wird die Tastatur geschlossen, nachdem der Dialog geschlossen wurde

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
0
Karthik Sankar

All diese Ratschläge für die Verwendung von InputMethodManager sind etwas vage - wo genau soll es bezeichnet werden,
und sie arbeiten zumindest nicht für mich.
Ja, die Tastatur verschwindet, aber die App stürzt ab !?
Das Hauptproblem ist, dass das Ausblenden der Tastatur zur gleichen Zeit erfolgt, wenn der Dialog verschwindet.

Um dies zu vermeiden, sollte dialog.dismiss() in view.postDelayed() nach imm.hideSoftInputFromWindow() aufgerufen werden und in meinem Fall setze ich delay als 150.

0
user3130847