保存和恢复片段中的自定义对象
问题描述:
我有两个片段FragmentA和FragmentB。保存和恢复片段中的自定义对象
public class FragmentB extends Fragment {
private ArrayList<String> customObj = new ArrayList<String>();
public void updateViews(ArrayList<String> obj) {
customObj = obj;
}
@Override
public void onSaveInstanceState(Bundle outState) {
System.out.println("Custom Object : "+customObj);//custom object is always empty
}
现在,每当我旋转屏幕,自定义: 从片段A i。由传递自定义对象作为参数的方法在片段B 例如下面是片段B更新片段B浏览对象是al;方法是空的。
注意 在这里,我只是更新Fragement B.意见的对象从片段A到片段B 同样的方法更新视图参数传递,我并不期待定义静态定制目的。
答
你可以做两件事情 1.存储该自定义对象的地方未建立每次方向改变时,即应用程序类,服务等 2.存储捆绑包内的对象,你得到尽可能的onSaveInstanceState里面的参数()和使用捆绑设置在OnRestoreInstanceState(),或在OnCreate()的对象...
例如,
@Override
protected void onCreate(Bundle savedInstanceState) {
Logger.d("Dash onCreate");
super.onCreate(savedInstanceState);
...
// create fragments to use
if (savedInstanceState != null) {
//get your Object
}
if (yourObject != null)
//restore the View using yourObject
...
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
现在您的自定义类,你将不得不要么实现Serializable或Parcelable为将其存储在Bundle中。序列化很简单,但如果您实施Parcellable,则可以对其进行更多控制。
上SO相关的一些其他类似的线程这个话题是
你可以得到一个类似的例子在Android的文件以了解Fragments。