我有一个Sugar ORM持久对象声明如下:
public class Trx extends SugarRecord implements Serializable {
...
}
请注意,当您扩展SugarRecord时,会继承一个 id 字段,该字段用于唯一标识您的持久对象。
从应用程序的主视图导航到详细视图时,我将按以下方式创建意图/ Activity :
Trx selectedItem = (Trx)trxList.getItemAtPosition(position);
Intent intent = new Intent(this,TransactionViewActivity.class);
intent.putExtra(CommonThings.CURRENT_TRX_KEY,selectedItem);
startActivity(intent);
在详细视图中,我正在检索当前项目(在onCreate()中),如下所示:
trx = (Trx) getIntent().getExtras().get(CommonThings.CURRENT_TRX_KEY);
因此,我的问题是:从“extras”中提取项目并对其进行调试后,缺少id字段。
当然,我可以做一个解决方法,将我的对象的ID传递为“额外”,然后在进行新 Activity 后再次访问数据库,但是我想知道为什么上面的方法不起作用。难道我做错了什么?
最佳答案
我设法通过更改持久对象以使用Sugar注解而不是扩展SugarRecord即解决了该问题。
从:
public class Trx extends SugarRecord implements Serializable {
...
}
至:
@Table
public class Trx implements Serializable {
private Long id;
...
}
这解决了我的ID字段缺失的问题