数据更改后CursorLoader没有更新

aka*_*tis 49 android android-contentprovider android-loadermanager android-cursorloader

我创建了一个小应用程序,试图理解LoaderManagerCursorLoader-classes 的功能.

我已经实现了LoaderCallbacks<Cursor>我的FragmentActivity-class,一切工作正常,但事实上,当我通过我的更新数据ContentResolver.update()ContentResolver.insert()-方法,onLoadFinished()不叫,结果我的数据不会更新.

我有一个自定义ContentProvider,我想知道问题是在我的ContentProvider中没有通知数据已更改或其他内容.

tha*_*sma 105

你叫setNotificationUri(ContentResolver cr, Uri uri)Cursor在返回之前ContentProvider.query()

你有没有打电话给你getContext().getContentResolver().notifyChange(uri, null)的'插入'方法ContentProvider

编辑:

在你的ContentResolver电话getContext().getContentResolver()中接听电话ContentProvider.

  • 此外,您不应该在onLoadFinished的任何位置调用cursor.close(),否则您将不会收到对基础数据集的任何进一步更新. (22认同)
  • 当我按照[android dev docs](http://developer.android.com/guide/topics/providers/content-provider-creating.html)创建内容提供者时,这没有提到 (5认同)

ult*_*aon 5

还要检查您是否在某处调用了 cursor.close(),因为在这种情况下,您会取消注册由 CursorLoader 注册的内容观察者。并且光标关闭由 CursorLoader 管理。