Hier gibt es einen Teil der Aktivität, wo sich die Bildschirmausrichtung ändert:
%Vor%Offensichtlich scheint der Dialog, der in der DialogFragment erscheint, direkt nach dem onLongClick über dem editText zu erscheinen (Ich weiß, dass die Activity beim Ändern der Bildschirmausrichtung neu gestartet wird, aber nicht wie beim ersten Mal, das erstellt wird, normal gestartet wird.)
Mein Problem: wenn ich mindestens einmal den Dialog öffne und ich ihn schließe, habe ich nach der Bildschirmausrichtung den Dialog wieder auf dem Bildschirm angezeigt, wie wenn ich den editText lang angeklickt habe.
Ich weiß nicht genau, warum das passiert.
Ich füge auch die Struktur des Dialogfragments an:
%Vor%Vielen Dank für die Hilfe.
Versuchen Sie, den Dialog mithilfe des Fragmentmanagers aus dem Stapel zu entfernen, anstatt ihn einfach zu entfernen.
getFragmentManager().beginTransaction().remove(dialogFragment.this).commit();
Übrigens, anstatt nur Fragment
für Ihren Dialog zu verwenden, sollten Sie DialogFragment
selbst verwenden. Zur Kasse: DialogFragment
Auch sollten Sie Ihre Aktivitätsmethoden niemals so aufrufen ( ((Main)getActivity()).setTextOnEditText(textDialog);
, es sei denn, Ihr Fragment ist eine statische innere Klasse. Stattdessen erstellen Sie ein interface
, um zwischen Fragmenten und Aktivität zu sprechen.
Wenn der Bildschirm die Ausrichtung ändert, ruft er die onSaveInstanceState-Methode auf und speichert den Status im Bundle-Objekt einschließlich des Stapels. Wenn Sie das Dialogfeld schließen, ohne diesen Stapel zu löschen, wird das Dialogfeld angezeigt, wenn Sie das Telefon drehen, da es sich im saveInstanceState-Bundle befindet.
Sie müssen den Dialog vom Stapel löschen mit:
%Vor%wenn Sie die Unterstützungsbibliothek für das Dialogfragment verwenden oder
%Vor% Wenn eine Konfigurationsänderung (wie Rotation) auftritt, wird das alte Fragment nicht zerstört - es fügt sich einfach wieder zur Aktivität zurück, wenn es neu erstellt wird (Androide behält Fragmente standardmäßig bei). Also, wenn Sie Ihre DialogFragment
vor der Rotation gezeigt haben, wird sie sofort nach der Rotation angezeigt.
Tags und Links android screen-orientation android-dialogfragment oncreate