【问题标题】:android update record and requeryandroid更新记录和重新查询
【发布时间】:2017-06-06 16:04:32
【问题描述】:

开发一个应用程序,在初始屏幕中显示从其数据库中检索到的数据。用户可以通过单独的编辑屏幕编辑数据。退出编辑屏幕将用户返回到初始显示屏幕,我重新查询数据库但返回的数据是编辑之前的值。

我正在使用数据库提供程序模型并尝试过:

  • 关闭初始数据库查找中使用的游标
  • 每次返回初始屏幕时使用单独的光标
  • 使用单独的查询来获取显示在编辑屏幕上的数据
  • 确保在使用游标数据完成时关闭每个使用的游标

数据库查询和重新启动应用程序会显示已编辑的值,因此我确信更新正在运行。我错过了什么?

【问题讨论】:

  • 您使用的是Loader吗?
  • 不使用加载器,一次只处理一条记录。
  • 此时您需要弄清楚您的代码在哪里没有按照您的预期执行。验证当您返回初始屏幕时您实际上正在运行一个新查询,这个新查询实际上返回了一些数据,这会触发 UI 的更新并将新值绑定到您的视图,新值实际上是新值而不是陈旧的值(可能涉及某种缓存)等。其中某处没有按预期工作。
  • @T.Barrett 在您移动到编辑屏幕时尝试在初始屏幕上使用finish(),或者如果您在onCreate() 中重新查询数据库,请将其从那里删除并将其放在其他位置喜欢onResume()
  • 我目前在 onResume 中进行重新查询,因此将尝试添加完成步骤。

标签: android database sqlite sql-update cursor


【解决方案1】:

发现该问题与用于支持编辑器功能的类中的错误状态有关。认为在退出编辑屏幕时会调用 onStop() 和 onDestroy() 并在这些方法中调用更新数据库的方法。

改为使用 onBackPressed() 并在显示更新值之前完成更新过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多