构造函数CursorLoader未定义

时间:2015-07-30 18:57:22

标签: android sqlite android-cursoradapter

我正在尝试从我的SQLiteTable中检索位置行,但是我遇到了编译错误,构造函数CursorLoader未定义。

@Override
public Loader<Cursor> onCreateLoader(int arg0,
    Bundle arg1) {

    // Uri to the content provider LocationsContentProvider
    Uri uri = LocationsContentProvider.CONTENT_URI;

    // Fetches all the rows from locations table

    //return new CursorLoader(null);
   //(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)

    /ERROR HERE
    return new CursorLoader(this, null, null, null, null);
}

在LocationsContentProvider.java

 /** A callback method which is invoked by default content uri */
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {

    if(uriMatcher.match(uri)==LOCATIONS){
        return mLocationsDB.getAllLocations();
    }
    return null;
}

2 个答案:

答案 0 :(得分:1)

CursorLoader没有五参数构造函数。更重要的是,您需要提供Uri指向您要查询的ContentProvider上的集合。欢迎您说最后四个参数是null,但是将Uri作为第二个参数添加到构造函数中。

您可能希望阅读将要使用的the documentation for the six-parameter CursorLoader constructor

另请注意,您的第一个代码段中的代码无法编译,因为您在两个null值之间缺少逗号。

答案 1 :(得分:1)

Cursor Loader构造函数获取以下属性:

public CursorLoader(Context context, Uri uri, String[] projection, String selection,
            String[] selectionArgs, String sortOrder) {
        super(context);
        mObserver = new ForceLoadContentObserver();
        mUri = uri;
        mProjection = projection;
        mSelection = selection;
        mSelectionArgs = selectionArgs;
        mSortOrder = sortOrder;
    }
你错过了一处房产。您可以添加一个null或定义您的订单并传递给构造函数。

并且正如CommonsWar所说,你必须通过你的URI作为第二个论点,