从onLoadFinished(...)调用getLoaderManager()。restartLoader(...)

时间:2013-09-13 00:02:23

标签: android android-fragments android-cursorloader android-loader

这是我的问题:我想在第一个加载器完成作业(加载完成)之后从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)

0 个答案:

没有答案