第二个活动通过ContentProvider插入数据库后,第一个活动的列表视图未更新; onLoadFinished没有调用

时间:2013-05-21 03:15:17

标签: android android-contentprovider android-cursoradapter android-loadermanager

问题:从第二个活动返回时,第一个活动的列表视图不反映第二个活动所做的数据库更改。如果我对代码进行微不足道的更改(使模拟器满意)并重新启动应用程序,listview现在可以准确地显示数据库更改上一次会话期间进行的第二次活动。

应用程序的内容:

MainActivity: extends Activity implements LoaderManager.LoaderCallbacks<Cursor>
=>onCreate: SimpleCursorAdapter set; getLoaderManager().initLoader(LOADER_ID, null, this)
=>onResume: super.onResume(); getLoaderManager().restartLoader(0, null, this)

......哦,我的傻瓜!有问题:initLoader和restartLoader正在使用不同的加载器ID。

这让我在过去的五个小时里难过。为什么我要离开这个问题:在试图解决我的问题时,我没有遇到这个答案(也许这只是一个让人有所顾忌的东西),但对于下一个以这种独特方式绊倒的人,这是一个潜在的答案。

1 个答案:

答案 0 :(得分:0)

确保在initLoader和restartLoader中的LoaderManager ID相同。

除了Alex和CommonsWare的所有其他帖子以及您在搜索未能更新列表视图的解决方案时遇到的所有其他帖子,这可能是您发生的其他事情。

在我寻找可能出错的地方时,我也注意到我没有实施:      cursor.setNotificationUri(getContext()。getContentResolver(),uri);

How do CursorLoader automatically updates the view even if the app is inactive?

...我关注的两个不同的教程如何实现内容提供者在他们的提供者中没有setContentNotificationUri&#39;查询方法;虽然他们使用了一个查询构建器而我没有(也许setContentNotificationUri包含在queryBuilder中?快速研究并没有暗示是这种情况)。