Soft-Tastatur nach Schließen des Dialogs ausblenden

Lesezeit: 4 Minuten

Ich möchte die Soft-Tastatur nach dem Schließen von AlertDialog ausblenden, aber sie 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);
    }
});

  • Hier finden Sie eine Lösung: workingfromhere.com/blog/2011/04/27/… ODER hier: stackoverflow.com/questions/1109022/…

    – AndroidGuy

    25. Juli 2012 um 8:54 Uhr


  • Beide Methoden verwenden die EditText-Ansicht, aber ich habe sie nicht. Ich habe kein EditText. Es ist ein Dialog in meiner SettingsActivity. Wenn es geschlossen ist, wird die Tastatur angezeigt 🙁

    – Dmytro Zaresenko

    25. Juli 2012 um 12:14 Uhr

  • Wenn Ihre Tastatur in einem Dialog auftaucht, bedeutet dies, dass Ihr Dialog einen EditText enthalten muss. Sie können also den obigen Code schreiben, indem Sie das Fenster-Token Ihres EditText übergeben und dann dialog.dismiss() aufrufen.

    – AndroidGuy

    26. Juli 2012 um 13:01 Uhr

  • oder wenn es nicht der obige Fall ist.. bedeutet, wenn Edittext nicht in Ihrem Dialog ist, müssen Sie überprüfen, für welchen EditText es auftaucht und ihn ausblenden, bevor Sie den Dialog anzeigen. Wenn dies auch nicht funktioniert, poste bitte deinen Code.

    – AndroidGuy

    26. Juli 2012 um 13:40 Uhr

Benutzer-Avatar
Rajeshwar

Im XML-Manifest

android:windowSoftInputMode="stateAlwaysHidden"

Beim Schließen von wird die Soft-Tastatur automatisch ausgeblendet Dialog

  • Dies sollte die akzeptierte Antwort sein! Es ist eine schlechte Vorgehensweise, in AndroidManifest.xml deklarierte Eigenschaften zu überschreiben

    – Renjith

    15. Juli 2015 um 14:08 Uhr

  • @Renjith kannst du bitte erläutern, warum es schlecht ist

    – Rajeshwar

    27. August 2015 um 9:45 Uhr

  • es hat bei mir nicht funktioniert, aber das Verstecken von edittext (edittext in dialog) und dialog.dismiss hat den Job gemacht

    – Narren

    3. September 2015 um 10:34 Uhr

  • @SeshuVinay, ich bin nur ein bescheidener Ingenieur, aber wenn mich mal anrufen, werde ich zu Batman 🙂 Pass auf dich auf, Kumpel ! 🙂

    – Narren

    8. Februar 2016 um 10:26 Uhr

  • Wow, 2 Stunden meines Lebens sind vorbei, danke Android: D

    – Daniel Wilson

    13. November 2018 um 16:11 Uhr

Benutzer-Avatar
NordicShaw

Ich bin auf das gleiche Problem gestoßen. Habe es so gelöst. Es braucht keine Referenz:

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

  • Dies funktioniert korrekt, wenn versucht wird, sich vor einem DialogFragment zu verstecken

    – Kammar

    20. September 2016 um 12:54 Uhr

  • Aber es hinterlässt vorübergehend einen weißen Schatten, wie kann man den weißen Schatten verhindern?

    – Sreekanth Karumanaghat

    14. Februar 2018 um 11:09 Uhr

  • was ist ‘imm’ ??

    – Brenddon Anjos

    27. August 2018 um 18:31 Uhr

  • @ BrenddonAnjos InputMethodManager Objekt

    – Sam Chen

    11. September 2019 um 19:54 Uhr

Ich hatte ein ähnliches Problem beim Schließen eines Warndialogs. Das scheint für mich der Trick zu sein.

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

  • Warum postDelayed verwenden?

    – zihadrizkyef

    17. Januar um 6:35 Uhr

Ich verwende diese Methode:

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

Wo searchTextEntry heißt mein EditText Hinweis.

Das funktioniert! Dadurch wird die Tastatur nach dem Schließen des Dialogs geschlossen

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

  • Es hat endlich funktioniert, nachdem ich zu viele Lösungen ausprobiert hatte. Das Schöne ist, dass es keine Ansicht benötigt und seinen Fokus überprüft.

    – Ravi Yadav

    30. Januar 2020 um 6:41 Uhr

  • Sie sollten jedoch prüfen, ob der Fokus vorhanden ist, andernfalls wird die Tastatur angezeigt, wenn er ausgeblendet ist

    – Madina Saidova

    5. März 2020 um 6:37 Uhr

Benutzer-Avatar
Yusuf Yaşar

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

  • Es hat endlich funktioniert, nachdem ich zu viele Lösungen ausprobiert hatte. Das Schöne ist, dass es keine Ansicht benötigt und seinen Fokus überprüft.

    – Ravi Yadav

    30. Januar 2020 um 6:41 Uhr

  • Sie sollten jedoch prüfen, ob der Fokus vorhanden ist, andernfalls wird die Tastatur angezeigt, wenn er ausgeblendet ist

    – Madina Saidova

    5. März 2020 um 6:37 Uhr

Benutzer-Avatar
ZygD

All diese Ratschläge zu verwenden InputMethodManager sind etwas vage – wo genau soll man es nennen,
und sie funktionieren zumindest bei mir nicht.
Ja, Tastatur verschwindet, aber dann stürzt die App ab!?
Das Hauptproblem besteht darin, dass das Ausblenden der Tastatur gleichzeitig mit dem Verschwinden des Dialogs erfolgt.

Um es zu vermeiden dialog.dismiss() einberufen werden soll view.postDelayed() nach imm.hideSoftInputFromWindow() und in meinem Fall habe ich die Verzögerung auf 150 eingestellt.

1074420cookie-checkSoft-Tastatur nach Schließen des Dialogs ausblenden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy