gpt4 book ai didi

android - 如何在不实现 parcelable 的情况下保存自定义对象 onSaveInstanceState

转载 作者:行者123 更新时间:2023-11-29 17:46:06 26 4
gpt4 key购买 nike

我需要保存一个我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com