【问题标题】:Room Persistence Library (Updating issue)房间持久性库(更新问题)
【发布时间】:2018-08-02 05:46:51
【问题描述】:

问题:大家好,我在 Room Persistence 库中遇到问题。我能够第一次和第二次更新数据库中实体的创建行,但是当我第三次查询数据库以更新同一行时,它没有得到更新。

使用的组件: Kotlin、Android 架构(Room Persistence Library、ViewModel)和 Dagger2

使用的版本: 1.1.1

设备/Android 版本复制于:所有设备

源代码位于: https://www.dropbox.com/s/nywrbpnffvb58jl/RoomDemo.zip?dl=0

【问题讨论】:

  • 提供更多信息。
  • 外星人,我正在更新实体行参数值。第一次和第二次,它的值正在更新,但在第二次之后,它既不会更新已经创建的行值,也不会为该实体创建新行。
  • 你能把代码sn-p贴在这里吗?
  • @SamirBhatt 请在此链接找到源代码:issuetracker.google.com/u/1/issues/112105566
  • @Alien 您可以在此链接获得更多信息和源代码:issuetracker.google.com/u/1/issues/112105566

标签: android kotlin android-room


【解决方案1】:

我看了你的代码。

首先,您在测试实体中使用了@PrimaryKey(autoGenerate = true)。

虽然你声明了一个 id 为 0 的测试,但 annonation 为你生成了 id。例如,第一项的 id 为 1,第二项的 id 为 2,以此类推

其次,看看你的TestDao。

@Query("SELECT * FROM ${Test.TABLE_NAME}")
    fun getTest(): LiveData<Test>

您只使用一个测试来获取所有项目,您将只获得所有测试的第一项。

由于这两个问题,您的第二次保存创建了一个 id 为 2 的测试,而您的 getTest() 总是返回 id 为 1 的测试,这会将 edittext 文本更改回来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 2018-01-22
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2017-10-29
    相关资源
    最近更新 更多