使用 Parceler 保存 Android Activity 或 Fragment 状态
Saving Android Activity or Fragment state using Parceler
我正在使用 parceler 库。我用 this 制作了一个复杂的对象。正如它所说,它使对象可打包,所以我想用它来保存片段状态。
这是我的模型
@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; }
}
在我的片段中有这个
ArrayList<Example> exampletLists;
但是当我尝试将其放入 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
}
并且我想在 onCreate Like 中获取值
if (savedInstanceState != null) {
exampletLists = savedInstanceState.getParcelableArrayList(EXAMPLE_LIST);
}
我怎样才能用这个库实现这个?
Parceler 可以包装 ArrayLists,所以您可以做的是在写入和读取 `savedInstanceState:
时使用 Parcels.wrap()
和 Parcels.unwrap()
方法
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));
}
}
我正在使用 parceler 库。我用 this 制作了一个复杂的对象。正如它所说,它使对象可打包,所以我想用它来保存片段状态。
这是我的模型
@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; }
}
在我的片段中有这个
ArrayList<Example> exampletLists;
但是当我尝试将其放入 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
}
并且我想在 onCreate Like 中获取值
if (savedInstanceState != null) {
exampletLists = savedInstanceState.getParcelableArrayList(EXAMPLE_LIST);
}
我怎样才能用这个库实现这个?
Parceler 可以包装 ArrayLists,所以您可以做的是在写入和读取 `savedInstanceState:
时使用Parcels.wrap()
和 Parcels.unwrap()
方法
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));
}
}