Fragment wieder "Attachen"

L

Lybrial

Neues Mitglied
0
Hallo,

Wenn man eine Activity mit einem Fragment hat, wird das Fragment
detached nach dem Aufruf von onDestroy() einer Activity.

Das passiert auch, wenn ich beispielsweise das Gerät drehe (rotiere).
Wie kann ich dann das entfernte Fragment wieder an seine Activity
attachen?
 
Zum Thema Rotation gibt es 100+1 Lösungen.

Die du wählst ist ggf. ungeschickt.

Es gibt eine Möglichkeit das du die Rotation nur als onConfiguration Change mitbekommst.

Dazu brauchst du entsprechende Anpassungen in der Manifestdatei.

-> Wie gesagt das ist nur eine von 101 Varianten.
 
Ich muss ein Fragment verwenden, da ich einen sehr langen AsyncTask
laufen habe, ohne Fragment würde das die ganze Zeit abschmieren, wenn
ich z. B. das Geräte rotiere.

Um das eigentliche Problem näher zu beschreiben:

Wenn ich den Bildschirm in dem Moment drehe, indem ich z. B. eine
Ausgabe mit Toast machen möchte:

Toast.makeText(this.getActivity(), this.getResources().getString(R.string.message_nfc_transfer_completed), Toast.LENGTH_LONG).show();

Bekomme ich den Fehler:

11-12 17:52:55.532: E/AndroidRuntime(28620): java.lang.IllegalStateException: Fragment LoginFragment{41fb9ad0} not attached to Activity

Ich könnte nun natürlich ein:

if(isAdded()) {
...
}

Anwenden, das würde zwar den Absturz verhindern, der Benutzer bekommt dann allerdings auch keine Ausgabe.

Der ursprüngliche Beitrag von 17:49 Uhr wurde um 18:19 Uhr ergänzt:

Hmmm...

nochmal gelesen und die Antwort sprang mich an.

Ich kann in der onCreate meinen Context in eine
Variable speichern und für solche Dinge wie Toast
etc. einfach auf diesen gespeicherten Context zugreifen.
Dann muss ich nicht getActivity() nutzen.
 
Zuletzt bearbeitet:
Macht nichts das du nicht liest was ich schreibe ;)
 
Habe doch geschrieben, dass ich eine Lösung gefunden habe.
Für meine Situation schien mir dies jetzt als die einfachste.
100 andere Lösungen könnte ich suchen, wenn ich die Zeit
dazu hätte.
 
Ich hab mal eine dumme Frage...

... ohne das ich deinen Code "verstehe".

Wie bist du dir sicher, das der AsyncTask nur 1x gestartet wird?
 
Modal Progress Dialog mit einem Cancel-Button, der den AsyncTask
auf Wunsch des Users abbricht.

Warum fragst du das. Hat doch mit dem was ich geschrieben habe
überhaupt nichts zu tun!?
 
Na weil ich Zeit hatte Doku zu lesen und deshalb die Frage relevant ist.

Vielleicht ist das aber auch vollkommen überflüssig, wenn du jetzt eine Lösung hast.
 
Jo, bis jetzt funktioniert alles so wie es soll.
Mal sehen ob es irgendwann noch Probleme gibt.
 

Ähnliche Themen

M
Antworten
2
Aufrufe
863
jogimuc
J
W
  • WuDiDong
Antworten
3
Aufrufe
765
jogimuc
J
Tiefkuehlpizza
Antworten
2
Aufrufe
951
Tiefkuehlpizza
Tiefkuehlpizza
Zurück
Oben Unten