如何在存储的onSaveInstanceState()值以及retrive? [英] How to store values in onSaveInstanceState() and retrive?

查看:134
本文介绍了如何在存储的onSaveInstanceState()值以及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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆