这是我的问题:我想在第一个加载器完成作业(加载完成)之后从onLoadFinished(...)方法初始化/重新启动第二个加载器,因为我需要来自第一个加载器游标的一些值。所以第二个加载器依赖于第一个加载器提供的一些值。
它有效......但是如果出现配置更改(旋转),它会崩溃,因为在此调用中,因为它可能在保存活动状态后发生。所以没有附加任何活动。例如,如果调用getActivity(),则返回null。如果你调用getLoaderManager()。XXX,当然也会发生同样的事情。
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(FIRST_LOADER, null, this);
(...)
}
...
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
switch (loader.getId()) {
case FIRST_LOADER:
data.moveToFirst();
value1 = data.getString(data.getColumnIndex(DBHelper.COLUMN_FIRST));
value2 = data.getString(data.getColumnIndex(DBHelper.COLUMN_SECOND));
getLoaderManager().restartLoader(SECOND_LOADER, null, this);
break;
case SECOND_LOADER:
(...)
}
}
但如果我在onDestroy(...)方法中手动销毁加载器,则没有问题。好吧,它的工作方式,但它不会让我开心。所以必须有其他方法来解决这个问题。
(对不起我的英语很差:)我希望这是可以理解的:P)