1

Ich verwende parceler Bibliothek. Ich habe damit ein komplexes Objekt geschaffen. Da es das Objekt parzellierbar macht, möchte ich es zum Speichern des Fragmentstatus verwenden.Speichern Android-Aktivität oder Fragment-Status mit Parceler

Hier ist mein Modell

@Parcel 
public class Example { 
    String name; 
    int age; 

    public Example() {} 

    public Example(int age, String name) { 
     this.age = age; 
     this.name = name; 
    } 

    public String getName() { return name; } 

    public int getAge() { return age; } 
} 

Und ich in meinem Fragment haben diese

ArrayList<Example> exampletLists; 

Aber wenn ich versuche, es in onSaveInstanceState

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putParcelableArrayList("EXAMPLE_LIST",exampletLists); //this is what I want to do , but I can't 
} 

Und ich will bekommen der Wert in onCreate Like

if (savedInstanceState != null) { 
    exampletLists = savedInstanceState.getParcelableArrayList(EXAMPLE_LIST); 
} 

Wie kann ich dies mit dieser Bibliothek erreichen?

+0

@shurvo Können Sie Ihr Problem kurz erklären? – Ajeet

+0

Ich habe eine Recycler-Ansicht, die einen Artikel über den Web-Service anzeigt. Jedes Mal, wenn ich den Bildschirm rotiere, wird der Webservice erneut aufgerufen. Um das zu vermeiden, muss ich den Staat retten. Und die Variable, die ich einstellen möchte, ist die Liste des Beispiels. Also muss ich die Beispielklasse Parcelable machen, also kann ich sie in outState.putParcelableArrayList stellen, ich habe die Klasse Beispiel Parcelable mit dieser Bibliothek gemacht, ich kann sie nicht outState.putParcelableArrayList setzen –

+0

Welchen Fehler bekommen Sie in putParcelable? – Ajeet

Antwort

1

Parceler Arraylisten wickeln kann, was so können Sie tun, ist zu verwenden, um die Parcels.wrap() und Parcels.unwrap() Methoden beim Schreiben und Lesen Ihrer `savedInstanceState:

public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putParcelable("EXAMPLE_LIST", Parcels.wrap(exampletLists)); 
} 

public void onCreate(Bundle savedInstanceState) { 
    //... 
    if (savedInstanceState != null) { 
     exampletLists = Parcels.unwrap(savedInstanceState.getParcelable(EXAMPLE_LIST)); 
    } 
} 
Verwandte Themen