问题:大家好,我在Room Persistence库中遇到问题。我能够第一次和第二次为数据库中的实体更新创建的行,但是当我第三次查询数据库以更新同一行时,它不会更新。
使用的组件:Kotlin,Android体系结构(Room Persistence Library,ViewModel)和Dagger2
使用的版本: 1.1.1
在以下设备上复制的设备/ Android版本:所有设备
源代码,网址为: https://www.dropbox.com/s/nywrbpnffvb58jl/RoomDemo.zip?dl=0
答案 0 :(得分:0)
我看了看你的代码。
首先,您在测试实体中使用了@PrimaryKey(autoGenerate = true)。
尽管您声明了ID为0的测试,但注解会为您生成ID。例如,第一项的ID为1,第二项的ID为2,依此类推。
第二,看看您的TestDao。
@Query("SELECT * FROM ${Test.TABLE_NAME}")
fun getTest(): LiveData<Test>
您只使用一个测试来获得所有项目,而您只会获得所有测试中的第一项。
由于这两个问题,您的第二次保存创建了一个ID为2的测试,而您的getTest()始终返回ID为1的测试,从而将edittext文本改回了。