How to store values ​​in onSaveInstanceState () and retrieve?

I try to save the arraylist value in onSavedInstanceState() and get the values ​​in the list of arrays in the onCreate method, but it calls eeror as unable to pause the action

here is my code

 public void onSaveInstanceState(Bundle savedInstanceState) { savedInstanceState.putParcelable("Old", (Parcelable) profileDetails ); super.onSaveInstanceState(savedInstanceState); } 

and in my onCreate()

 if (savedInstanceState != null) { profileDetails= (ArrayList<ProfileDetails>)savedInstanceState.getParcelable("Old"); } else { profileDetails = GetSearchResults(); } 
+6
source share
3 answers

you cannot cascaded arraylist to pass this link, help you in parlock arraylist Android ArrayList <MyObject> pass as important as possible this code can help you

 public class ParcleListTopic implements Parcelable{ private List<ParcleTopic> list; private ArrayList<HoldListTopic> listh=new ArrayList<HoldListTopic>(); public ArrayList<HoldListTopic> GetListTopic() { for(int i=0;i<list.size();i++) { listh.add(list.get(i).GetHold()); } return listh; } public void writeToParcel(Parcel dest, int flags) { dest.writeTypedList(list); } public ParcleListTopic(Parcel in) { in.readTypedList(list,ParcleTopic.CREATOR); } public ParcleListTopic(List<ParcleTopic> list) { this.list=list; } public static final Parcelable.Creator<ParcleListTopic> CREATOR = new Parcelable.Creator<ParcleListTopic>(){ public ParcleListTopic createFromParcel(Parcel s) { return new ParcleListTopic(s); } public ParcleListTopic[] newArray(int size) { return new ParcleListTopic[size]; } }; public int describeContents() { // TODO Auto-generated method stub return 0; } } public class ParcleTopic implements Parcelable { HoldListTopic hold; public ParcleTopic(HoldListTopic hold) { this.hold=hold; } public HoldListTopic GetHold() { return hold; } public int describeContents() { return 0; } public void writeToParcel(Parcel dest, int flags) { dest.writeString(hold.Title); dest.writeString(hold.Date); dest.writeInt(hold.NumberComment); dest.writeInt(hold.ID); } public ParcleTopic(Parcel in) { hold.Title=in.readString(); hold.Date=in.readString(); hold.NumberComment=in.readInt(); hold.ID=in.readInt(); } public static final Parcelable.Creator<ParcleTopic> CREATOR = new Parcelable.Creator<ParcleTopic>() { public ParcleTopic createFromParcel(Parcel s) { return new ParcleTopic(s); } public ParcleTopic[] newArray(int size) { return new ParcleTopic[size]; } }; } 
+4
source

to save the value in instance save state

 @Override public void onSaveInstanceState(Bundle savedInstanceState) { // Save UI state changes to the savedInstanceState. // This bundle will be passed to onCreate if the process is // killed and restarted. savedInstanceState.putBoolean("MyBoolean", true); savedInstanceState.putDouble("myDouble", 1.9); savedInstanceState.putInt("MyInt", 1); savedInstanceState.putString("MyString", "Welcome back to Android"); // etc. super.onSaveInstanceState(savedInstanceState); } 

restore value

 @Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); // Restore UI state from the savedInstanceState. // This bundle has also been passed to onCreate. boolean myBoolean = savedInstanceState.getBoolean("MyBoolean"); double myDouble = savedInstanceState.getDouble("myDouble"); int myInt = savedInstanceState.getInt("MyInt"); String myString = savedInstanceState.getString("MyString"); } 
+5
source

A package can also store Serializable objects.

Make sure your class ProfileDetails implements Serializable .

After that, you can save / restore the ArrayList in the Bundle using:

 savedInstanseState.putSerializable("Old", profileDetails); ... profileDetails = (ArrayList<ProfileDetails>)savedInstanceState.getSerializable("Old"); 

You must also ensure that class ProfileDetails contains only fields of primitive types or Serializable (strings, arrays already implement this interface).

+5
source

Source: https://habr.com/ru/post/947615/


All Articles