【发布时间】:2014-10-12 16:22:02
【问题描述】:
我想让一些数据持久化,我按照开发者指南Here 创建了一个数据片段类来保存我的所有数据。
在 onCreate 中,我使用以下逻辑来确定 Data Fragment 是否为空(也在开发人员指南中描述):
find the retained fragment on activity restarts
FragmentManager fm = getFragmentManager();
dataFragment = (DataFragment) 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();
// load the data from the web
dataFragment.setData(loadMyData());
} else {
//loading data from dataRestoreFragment
}
super.onCreate(savedInstanceState);
但 dataFrag 始终为 NULL,即使在方向改变之后! 这里有什么问题?
编辑:
数据片段代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// retain this fragment
setRetainInstance(true);
}
我不得不提一下,如果我在 super.onCreate(savedInstanceState); 之后检查 datafrag它会工作并返回正确的片段,但问题是,我的另一个片段是 ListFragment,它的适配器将在恢复数据之前被调用,因此我无法将数据加载到该片段中,并且片段将没有数据并导致应用程序崩溃! 如果将代码放在 super.onCreate(savedInstanceState) 之前,它将在 Listfragment 适配器之前执行,但它是 null !
那么我该如何解决这个问题?
【问题讨论】:
-
查看您是否在设备或模拟器上的“设置”>“开发者选项”中启用了“不保留活动”。
-
不,没有检查@CommonsWare
标签: java android android-fragments android-studio