繁体   English   中英

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

[英]1st Activity's listview not updated after 2nd activity inserts into database via ContentProvider; onLoadFinished not called

问题:从第二个活动返回时,第一个活动的列表视图无法反映第二个活动对数据库所做的更改。 如果我对代码进行了微不足道的更改(使模拟器满意)并重新启动应用程序,则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。

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

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

除了Alex和CommonsWare撰写的所有其他文章,以及在寻找无法更新列表视图的解决方案时遇到的所有其他文章,这可能是您发生的其他事情。

在搜索可能出了什么问题的过程中,我还指出我没有实现:cursor.setNotificationUri(getContext()。getContentResolver(),uri);

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

...我正在遵循的两个有关如何实现内容提供程序的教程在其提供程序的查询方法中没有setContentNotificationUri; 尽管他们使用了querybuilder,但我没有使用(也许setContentNotificationUri包含在queryBuilder中?快速研究并未发现是这种情况)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM