Android Cursor Loader只能运行一次

时间:2013-05-27 15:53:10

标签: android android-loadermanager android-cursorloader

我正在使用游标加载器从我的内容提供商加载数据,而不是总是得到结果。在我对内容加载器的初始调用中,它返回正确的结果:

    getSupportLoaderManager().restartLoader(
                LOADER_LOCATION_INFO, null, this);

然而,当我再次运行此查询时(使用上面相同的代码),我没有得到任何结果。不调用加载程序回调。

public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
    switch(arg0){
    case (LOADER_LOCATION_INFO):
        return new CursorLoader(this, 
                               //my query

    }
    return null;
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor arg2) {
    switch (loader.getId()) {
    case (MY_CASE):
        doSomething(arg2);
        break;
    }   
}

@Override
public void onLoaderReset(Loader<Cursor> arg0) {
    // TODO Auto-generated method stub

};

我不知道它是否重要,但我也是从这个活动中的一个片段调用loaderManager。这些查询工作正常。 什么会导致这个?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

我的问题在于加载程序ID。我有几个片段和父活动的LoaderCallbacks。我使用静态最终int来声明每个片段/活动中的ID。我使用相同的ID。我将所有ID移动到父活动并使它们成为唯一。这解决了这个问题。