0

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

应用程序的胆量:

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。

在过去的五个小时里,这让我很难过。为什么我要离开这个问题:在尝试解决我的问题时,我没有遇到这个答案(也许它太愚蠢了,无法建议某人寻找)但是对于下一个以这种独特方式绊倒的人,这是一个潜在的答案。

4

1 回答 1

0

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

除了 Alex 和 CommonsWare 的所有其他帖子以及您在寻找更新失败列表视图的解决方案时会遇到的所有其他帖子之外,这可能是您遇到的其他事情。

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

即使应用处于非活动状态,CursorLoader 如何自动更新视图?

...我遵循的关于如何实现内容提供者的两个不同教程在其提供者的查询方法中没有那个 setContentNotificationUri;尽管他们使用了 querybuilder 而我没有(也许 setContentNotificationUri 包含在 queryBuilder 中?快速研究并未表明情况如此)。

于 2013-05-21T03:15:16.710 回答