我实现了ListFragment
,它使用了CursorAdapter
的实现并实现了LoaderCallbacks<Cursor>
。当用户点击此列表中的某个项目时,用户将被带到另一个fragment
。在这里,用户可以选择删除点击的特定项目。
现在在deleteFooItem()
我使用了我执行ContentProvider
的删除操作。具体如下:
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int uriType = sURIMatcher.match(uri);
SQLiteDatabase sqlDB = sqlitehelper.getWritableDatabase();
int rowsDeleted = sqlDB.delete(TJItemTable.TABLE_NAME, selection, selectionArgs);
getContext().getContentResolver().notifyChange(uri, null);
return rowsDeleted;
}
这种安排很好。
但删除发生后,我致电fragmentManager.popBackStack()
返回原来的ListFragment
。此列表仍显示我刚刚删除的旧数据。在调试时,onLoadFinished(Loader<Cursor> loader, Cursor cursor)
会被调用,但是这会将光标与仍具有旧信息的光标交换。
如果我关闭应用并再次打开它,则列表不会显示已删除的信息。
我做错了什么?