我正在尝试从我的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;
}
答案 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
作为第二个论点,