如何在存储的onSaveInstanceState()值以及retrive? [英] How to store values in onSaveInstanceState() and retrive?
问题描述
我想一个ArrayList的存储值在 onSavedInstanceState()
并在onCreate方法一个数组列表获取值,但它提出像一个eeror无法暂停活动
这是我的code
公共无效的onSaveInstanceState(捆绑savedInstanceState){
savedInstanceState.putParcelable(老,(Parcelable)profileDetails);
super.onSaveInstanceState(savedInstanceState);
}
在我的的onCreate()
如果(savedInstanceState!= NULL){
profileDetails =(ArrayList的< ProfileDetails>)savedInstanceState.getParcelable(老);
}
其他{
profileDetails = GetSearchResults();
}
你不能级联的ArrayList到parcable此链接帮助您parcle的ArrayList <一个href=\"http://stackoverflow.com/questions/10953121/android-arraylistmyobject-pass-as-parcelable\">Android ArrayList的&LT;&MyObject的GT;通过为parcelable
这code可以帮助你。
公共类ParcleListTopic实现Parcelable {
私人列表&LT; ParcleTopic&GT;清单;
私人的ArrayList&LT; HoldListTopic&GT; listh =新的ArrayList&LT; HoldListTopic&GT;();
公众的ArrayList&LT; HoldListTopic&GT; GetListTopic()
{
的for(int i = 0; I&LT;则为list.size();我++)
{
listh.add(list.get(ⅰ).GetHold());
}
返回listh;
}
公共无效writeToParcel(DEST包裹,INT标志){
dest.writeTypedList(名单);
}
公共ParcleListTopic(包裹中)
{
in.readTypedList(列表,ParcleTopic.CREATOR); }
公共ParcleListTopic(列表&LT; ParcleTopic&GT;清单)
{
this.list =清单;
}
公共静态最终Parcelable.Creator&LT; ParcleListTopic&GT; CREATOR =新Parcelable.Creator&LT; ParcleListTopic&GT;(){
公共ParcleListTopic createFromParcel(包裹S)
{
返回新ParcleListTopic(S);
}
公共ParcleListTopic [] newArray(INT大小)
{
返回新ParcleListTopic【尺寸】;
}
};
公众诠释describeContents(){
// TODO自动生成方法存根
返回0;
}
}
公共类ParcleTopic实现Parcelable
{
HoldListTopic保持;
公共ParcleTopic(HoldListTopic保持)
{
this.hold =保持;
}
公共HoldListTopic GetHold()
{
返回保持;
}
公众诠释describeContents()
{
返回0;
}
公共无效writeToParcel(DEST包裹,INT标志)
{
dest.writeString(hold.Title);
dest.writeString(hold.Date);
dest.writeInt(hold.NumberComment);
dest.writeInt(hold.ID);
}
公共ParcleTopic(包裹中)
{
hold.Title = in.readString();
hold.Date = in.readString();
hold.NumberComment = in.readInt();
hold.ID = in.readInt();
}
公共静态最终Parcelable.Creator&LT; ParcleTopic&GT; CREATOR =新Parcelable.Creator&LT; ParcleTopic&GT;()
{
公共ParcleTopic createFromParcel(包裹S)
{
返回新ParcleTopic(S);
}
公共ParcleTopic [] newArray(INT大小)
{
返回新ParcleTopic【尺寸】;
}
}; }
Am trying to store value of a arraylist in onSavedInstanceState()
and get the values in a array list in onCreate method but it raises an eeror like unable to pause activity
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();
}
you cant cascade arraylist to parcable this link help you for parcle arraylist Android ArrayList<MyObject> pass as parcelable this code may 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];
}
}; }
这篇关于如何在存储的onSaveInstanceState()值以及retrive?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!