安卓:如何保存屏幕方向变化的活动实例?我使用对象,而不仅仅是简单的变量



我在屏幕方向更改时保存实例时遇到问题。我有一个特定结构的数组:

private ArrayList <MyObject> myArr;

这个结构是:

public MyObject{
    public variable1;
    //..... many variables here and one array :)
}

我需要保存"myArr"数组。如何保存此"变量"?

基本上,应该使用Android Activity API Ref中描述的方式保存实例:您需要使用onSaveInstanceState(Bundle)。此外,您可以在清单中为某个活动设置android:configChanges="orientation",以防止其重新创建(这样就不需要任何状态保存了)。

onSaveInstanceState(Bundle)中问题中的对象保存到捆绑包:

  • 通过MyObject实现Parcelable(例如,可以在此处找到示例等)
  • 通过onSaveInstanceState()中的putParcelableArrayList()将ArrayList放入bundle中,旋转后通过onCreate()中的getParcelableArray()返回

最新更新