【发布时间】:2017-06-06 16:04:32
【问题描述】:
开发一个应用程序,在初始屏幕中显示从其数据库中检索到的数据。用户可以通过单独的编辑屏幕编辑数据。退出编辑屏幕将用户返回到初始显示屏幕,我重新查询数据库但返回的数据是编辑之前的值。
我正在使用数据库提供程序模型并尝试过:
- 关闭初始数据库查找中使用的游标
- 每次返回初始屏幕时使用单独的光标
- 使用单独的查询来获取显示在编辑屏幕上的数据
- 确保在使用游标数据完成时关闭每个使用的游标
数据库查询和重新启动应用程序会显示已编辑的值,因此我确信更新正在运行。我错过了什么?
【问题讨论】:
-
您使用的是Loader吗?
-
不使用加载器,一次只处理一条记录。
-
此时您需要弄清楚您的代码在哪里没有按照您的预期执行。验证当您返回初始屏幕时您实际上正在运行一个新查询,这个新查询实际上返回了一些数据,这会触发 UI 的更新并将新值绑定到您的视图,新值实际上是新值而不是陈旧的值(可能涉及某种缓存)等。其中某处没有按预期工作。
-
@T.Barrett 在您移动到编辑屏幕时尝试在初始屏幕上使用
finish(),或者如果您在onCreate()中重新查询数据库,请将其从那里删除并将其放在其他位置喜欢onResume() -
我目前在 onResume 中进行重新查询,因此将尝试添加完成步骤。
标签: android database sqlite sql-update cursor