gpt4 book ai didi

android - setRetainInstance(true) 不持久化Fragment的成员变量

转载 作者:行者123 更新时间:2023-11-30 03:42:00 27 4
gpt4 key购买 nike

我正在使用无 View fragment 在我的 Activity 方向更改期间存储一些数据。它看起来大致是这样的:

public class BoardActivity extends BaseActivity {
private DataHandler mDataHandler;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// initialize the data handler
mDataHandler = (DataHandler)mFragmentManager.findFragmentByTag("data");
if (mDataHandler == null) {
mDataHandler = new DataHandler();
mFragmentManager.beginTransaction().add(mDataHandler, "data").commit();

// initialize the data
mDataHandler.mThreads = ...;
} else {

// here, the data is taken and the ListView is filled again.
fillView();
}
}

public static class DataHandler extends Fragment {
private Topic[] mThreads;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
}
}

发生的事情是,当 Activity 离开(例如使用主页按钮)并且由于某种原因在后台被杀死时,应用程序会在该 Activity 重新启动时崩溃。原因是虽然FragmentmDataHandler被FragmentManager找到了,但是它的成员变量(mThreads)是null

为什么Fragment本身可以被保留,而它的变量却被设置为零呢?

最佳答案

How come the Fragment itself can be retained but its variables are set to zero?

fragment 没有被保留。保留 fragment 仅在配置更改时保留。您没有进行配置更改。您的进程已终止,因为 Android 需要 RAM 来支持其他应用。

关于android - setRetainInstance(true) 不持久化Fragment的成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585948/

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