希望我只是忘记或从未理解过的简单Java问题。我一直在使用Android 4.0中的Loaders。该程序按原样工作,但现在我要寻找“下一个”部分。我想要一个标准的Cursor加载器和一个自定义的AsyncTaskLoader。我陷入了第1部分,试图将cursorLoader转换为Loader并返回它。

@Override
    //public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    public Loader<Object> onCreateLoader(int id, Bundle args) {

        if (id == LISTVIEWLOADER) {
            String[] projection = { RunnerTable.COLUMN_ID,
                    RunnerTable.COLUMN_NAME };
            CursorLoader cursorLoader = new CursorLoader(getActivity(),
                    FanContentProvider.CONTENT_URI, projection, null, null,
                    null);


            return cursorLoader;   //HERE IS THE PROBLEM
        }
        return null;
    }

类型不匹配无法从CursorLoader转换为Loader。

我相信可以使其与
public class MainFragment extends ListFragment implements
        //LoaderManager.LoaderCallbacks<Cursor>
        LoaderManager.LoaderCallbacks

但是不喜欢警告:

LoaderManager.LoaderCallbacks是原始类型。泛型类型LoaderManager.LoaderCallbacks的引用应参数化

多谢您提供的协助。

最佳答案

即使这是一个旧线程,也尚未完全解决。 tch0106涉及了此处的问题,但未完整描述。

我遇到了同样的问题,并在导入部分中解决了该问题。简而言之:一起使用支持Loader,CursorLoader和LoaderCallbacks。

在android本地库和支持库中都可以找到几个类。不要将支持库与非支持库版本混合使用。

// Use these together
import android.support.v4.content.CursorLoader;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;

// Or use these, but don't mix and match
import android.content.CursorLoader;
import android.content.Loader;
import android.app.LoaderManager.LoaderCallbacks;
import android.widget.SimpleCursorAdapter;

关于java - 如何将cursorLoader强制转换为Loader <Object>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13057865/

10-09 06:02