我正在创建并尝试使用活动的android保存表但由于某种原因该对象无法保存。我得到的错误是
java.lang.NullPointerException: Attempt to invoke virtual method 'long java.lang.Long.longValue()' on a null object reference
在调试反编译的Model.class文件时,我发现执行以下语句时发生异常
(请注意,以下行来自activeandroid的反编译Model.class文件)
long entityId1 = ((Model)e).getId().longValue();
失败并发生上述异常。在catch块中,我观察到对于所有非原始类型字段,mId都是非null,但对于发生异常的字段,mId为null。我试图在网上搜索,但只能找到关于mId的一行。
ActiveAndroid automatically creates another auto-increment ID column. This is mId.
那么为什么在这种情况下不能这样做呢。有人有想法吗?谢谢!!
答案 0 :(得分:0)
好的,我找到了答案。
从codepath我发现
问题在于,这是因为ActiveAndroid需要您保存 所有对象分开。例如,在保存推文之前,请务必 首先保存关联的用户对象。所以当你有推文时 在调用tweet.save()之前引用用户确定user.save() 因为存储用户需要设置本地ID并将其指定为 推文的外键。
因此,在保存对象之前,我必须先保存非原始类型的对象字段。