我有一个Sugar ORM持久对象声明如下:
public class Trx extends SugarRecord implements Serializable {
...
}
注意,在扩展SugarRecord时,您继承了用于唯一标识持久对象的 id 字段。
从我的应用程序的主视图导航到它的详细视图时,我按如下方式创建意图/活动:
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传递为" extra"我参与新活动后再次点击数据库,但我想知道上述原因为什么不起作用。我做错了吗?
答案 0 :(得分:2)
我设法通过更改持久对象来使用Sugar注释而不是扩展SugarRecord来解决问题,即
从:
public class Trx extends SugarRecord implements Serializable {
...
}
为:
@Table
public class Trx implements Serializable {
private Long id;
...
}
这解决了我遗漏的id字段
的问题