我需要保存在 fragment 中使用的自定义对象,这样当屏幕旋转时(当应用程序调用 onDestroy 然后调用 onCreate 时)它就不会丢失
现在通常的方法是实现 Parcelable 接口(interface)并将其作为 Parcelable 对象保存到包中。
这是一种非常乏味的做事方式。
有没有办法将对象作为“putObject”方法传递?
最佳答案
您可以将数据保存在 fragment 中,并在配置更改期间保留,如example .
Extend the Fragment class and declare references to your stateful objects.
public class RetainedFragment extends Fragment {
// data object we want to retain
private MyDataObject data;
// this method is only called once for this fragment
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// retain this fragment
setRetainInstance(true);
}
.. getter and setter
}
Then use FragmentManager to add the fragment to the activity.
public class MyActivity extends Activity {
private RetainedFragment dataFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
..
// find the retained fragment on activity restarts
FragmentManager fm = getFragmentManager();
dataFragment = (RetainedFragment) fm.findFragmentByTag(“data”);
// create the fragment and data the first time
if (dataFragment == null) {
// add the fragment
dataFragment = new DataFragment();
fm.beginTransaction().add(dataFragment, “data”).commit();
} else {
// available dataFragment.getData()
..
// save data in onDestroy dataFragment.setData(yourData);
关于android - 如何在不实现 Parcelable 的情况下保存自定义对象 onSaveInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26582640/