我正在使用无视图片段在我的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);
}
}
}
当发生活动时(例如使用主页按钮)并且出于某种原因在后台被杀死时,应用程序会在重新启动该活动时崩溃。原因是虽然片段mDataHandler
是由FragmentManager找到的,但其成员变量(mThreads
)是null
。
为什么片段本身可以被保留但是它的变量被设置为零?
答案 0 :(得分:1)
为什么片段本身可以保留但其变量设置为零?
未保留片段。保留的片段仅用于配置更改。您没有进行配置更改。您的流程已终止,因为Android需要RAM来支持其他应用。