2014-10-28 152 views
1

如果屏幕旋转时,我要救我的对象列表,让我实现我的目标如下:savedInstanceState.getParcelableArrayList()返回空列表

公共类视频实现Serializable,Parcelable {

private String mTitle; 
private String mVideoID; 
private String mThumbUrl; 

public Video(String title, String id, String thumbUrl) { 
this.mTitle = title; 
this.mVideoID = id; 
this.mThumbUrl = thumbUrl; 
    } 

@Override 
public int describeContents() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    // TODO Auto-generated method stub 
    dest.writeString(mTitle); 
    dest.writeString(mVideoID); 
    dest.writeString(mThumbUrl); 
} 

public Video(Parcel in) { 
    // TODO Auto-generated constructor stub 
    mTitle = in.readString(); 
    mVideoID = in.readString(); 
    mThumbUrl = in.readString(); 
} 

public static final Parcelable.Creator<Video> CREATOR = new Parcelable.Creator<Video>() { 

    @Override 
    public Video[] newArray(int size) { 
     // TODO Auto-generated method stub 
     return new Video[size]; 
    } 

    @Override 
    public Video createFromParcel(Parcel in) { 
     // TODO Auto-generated method stub 
     Log.e("CREATOR", in.readString()); 
     return new Video(in); 
    } 
}; 
对象

}

而且在MainActivity,我取回保存的列表:

if (savedInstanceState != null) { 
     ArrayList<Video> saved = savedInstanceState.getParcelableArrayList(VIDEO_LIST); 

     Toast.makeText(this, "Count: " + saved.size(), Toast.LENGTH_SHORT) 
       .show(); 
    } 

- >问题是,旋转屏幕列表中的对象为空之后:saved.size()= 0 请告诉我为什么?我如何解决它。谢谢

回答

0

这个变量savedInstanceState是在onCreate方法内吗?

该变量大于零的不同,你需要保存的onSaveInstanceState方法(捆绑outState)内的对象,就像这样:

protected void onSaveInstanceState (Bundle outState){ 
    outState.putParcelable(VIDEO_LIST, videoList); 
} 

更多信息here.

------ -----更新-----------

安卓文档说,onSaveInstanceState仅在应用程序被终止时调用。

这个方法在一个活动可能被杀死之前被调用,以便当它在将来回来一段时间时它可以恢复它的状态。

既然你只是旋转屏幕,应用程序不会被杀死,你的活动只是重新创建。 这就是变量为null的原因。

+0

是的,我保存状态onSaveInstanceState,但我用: outState.putParcelableArrayList(VIDEO_LIST,mVideos); – Binngokute 2014-10-28 16:46:59

+0

看看我的答案更新。 – FelipeJM 2014-10-28 16:49:28

+0

问题是甚至savedInstanceState NOT NULL,但savedInstanceState.getParcelableArrayList(VIDEO_LIST)返回空列表 – Binngokute 2014-10-28 16:50:00