2017-06-27 3 views
0

zunächst habe ich eine Aktivität A, in der ich ein Fragment so hier öffnen werde, wie kann ich das Fragment speichern So, dass, wenn ich meine Anwendung nach der Zerstörung starten stellt das Fragment in derselben Aktivität in gleiche PositionSpeichern Fragment Transaktion überall

Denn die Beantwortung Bequemlichkeit hier ist mein Fragment Transaktionscode:

Fragment newFragment = new ece_frag(); 
    FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
    transaction.setCustomAnimations(R.anim.fade_in,R.anim.fade_out); 
    transaction.replace(R.id.frame_layout, newFragment); 
    transaction.commit(); 
+0

Setzen Sie dies in onCreate der Aktivität. Wann immer die Aktivität erstellt wird, wird dieses Fragment hinzugefügt. –

+0

Eigentlich wollte ich dieses Fragment anwenden, wenn auf die Schaltfläche geklickt wird –

+0

Verwenden Sie gemeinsame Preferences für diese, dann können Sie den Index speichern, indem Sie alle Fragmente indizieren. Dann überprüfe in onCreate was das letzte Fragment war und lade es. –

Antwort

1

Können sagen, Sie haben drei Fragmente A, B und C.

ich gebe Index zu jedem Fragment wie das sagen 0- > A, 1-> B, 2-> C. Also, wenn ich das tue, ich spare auch den Index wie dem folgenden Code:

Fragment newFragment = new A(); 
FragmentTransaction transaction = 
getFragmentManager().beginTransaction(); 
transaction.setCustomAnimations(R.anim.fade_in,R.anim.fade_out); 
transaction.replace(R.id.frame_layout, newFragment); 
transaction.commit(); 
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt("last_fragment", 0);//For fragment A saving index 0 
editor.commit(); 

Und dann in onCreate können Sie eine if-Fall wie diesen:

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
//0 here is the default value 
int lastFragment = sharedPref.getInt("last_fragment", 0); 

Dann können Sie diese

tun
switch(lastFragment){ 
    case 0: 
    //Load your fragment Here according to the index. 
    break; 
    case 1: 
    //Load your fragment Here according to the index. 
    break; 
    case 2: 
    //Load your fragment Here according to the index. 
    break; 

} 

Hoffe, das hilft.

+0

in Fall 0 Ich habe vorherigen Code für Fragment-Transaktion verwendet, die ich in Frage –

+0

und es funktioniert nicht auf diese Weise –

+0

Ein ernstes Dankeschön, ich war nach dieser Antwort von zwei Tagen ... –

Verwandte Themen