Ich versuche zu entscheiden und zeigen ein Fragment in Aktivität onResume Methode, aber in dem Fall, dass ein zuvor hinzugefügtes Fragment erneut gewählt wird, dann wird die Aktivität leer.Ersetzen eines Fragments mit sich selbst zeigt nichts
Beispielcode (mit einem Fragmente):
@Override
protected void onResume(){
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.myLayout, fragA);
trans.commit();
getSupportFragmentManager().executePendingTransactions();
}
Mit obigem Code, wenn die Aktivität zum ersten Mal erstellt wird, zeigt es Fraga richtig, aber falls ich drücke Home-Taste und dann zurück zu meiner Aktivität wechseln (um onResume wieder zu provozieren), es wird alles leer (scheint wie fragA entfernt wird).
Wird ein zuvor hinzugefügtes Fragment ersetzt? oder wie man ein Fragment nicht verliert, wenn es von selbst ersetzt wird?
Ich initialisiere ** fragA ** in * onCreate *, was bedeutet, dass ich den Verweis auf mein Fragment behalte. Also warum erlaubt es nicht, es nach dem Entfernen dieses Fragments hinzuzufügen? – waqaslam
Wegen genau das, was ich gesagt habe. Sobald Sie eine Instanz eines Fragments entfernen, können Sie sie nicht mehr hinzufügen. Es ist zerstört, fertig, nicht mehr verwendbar. –
Eine andere Sache zu überprüfen ist, dass R.id.myLayout die ID des Containers ist, in den Sie Ihr Fragment einfügen möchten. Wenn dies der Fall ist, versuchen Sie, den Ersetzungsaufruf zu ersetzen (R.id.myLayout, new FragmentClass()) –