我有一个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字段缺失的问题

10-01 22:35