Моля, помогнете ми да разбера какво се случва тук.
Имам два фрагмента (A и B) в раздели, които четат данни от различни таблици, чрез CursorLoader и aContentProvider, в Sqlite-база данни. С различни URI мога да променя към коя таблица ContentProvider прави заявки.
I работи според очакванията, когато превключвам между разделите A и B, освен ако не превключа към B, завъртя и превключа обратно към A, се връща грешен курсор. Курсорът от фрагмент B се връща вместо курсор за фрагмент A, като кара listView във фрагмент A да причини срив. По някакъв начин курсорът изглежда се използва повторно при завъртане.
Защо се случва това и как мога да предотвратя връщането на грешен курсор?
Това е, което имам както във фрагмент А, така и във фрагмент Б. Опитах се да направя идентификационен номер на товарач без успех.
public void onResume() {
super.onResume();
getLoaderManager().restartLoader(mLoaderId, null, this);
}
Моят ContentProvider изглежда така:
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
Cursor cursor = null;
switch (uriMatcher.match(uri)) {
case ALL_NEWS:
queryBuilder.setTables(NewsDb.SQLITE_TABLE);
cursor = queryBuilder.query(db, projection, selection,
selectionArgs, null, null, sortOrder);
break;
case SINGLE_PLACE:
queryBuilder.setTables(PlacesDb.SQLITE_TABLE);
String id = uri.getPathSegments().get(1);
queryBuilder.appendWhere(PlacesDb.KEY_ID + "=" + id);
cursor = queryBuilder.query(db, projection, selection,
selectionArgs, null, null, sortOrder);
break;
default:
throw new IllegalArgumentException("Unsupported URI: " + uri);
}
return cursor;
}
Loader
вonResume()
? При използване наCursorLoader
данните се актуализират автоматично. 2. Използвате лиLoader
s вActivity
? Ако да защо? - person Paul Burke   schedule 25.11.2013