Nach der Änderung der Bildschirmausrichtung erscheint das Dialogfeld scheinbar ohne Aufruf

8

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.

    
Gasta87 18.02.2014, 20:29
quelle

3 Antworten

8

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.

    
Jabbar_Jigariyo 18.02.2014, 23:11
quelle
7

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%     
Driedshrimp 22.07.2014 06:29
quelle
0

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.

    
nikis 18.02.2014 20:38
quelle