Sugar ORM Android 应用程序在导航到新屏幕时丢失持久对象的 id 字段
Sugar ORM Android application loses persistent object's id field when navigating to new screen
我有一个 Sugar ORM 持久对象声明如下:
public class Trx extends SugarRecord implements Serializable {
...
}
请注意, 当您扩展 SugarRecord 时,您继承了一个 id 字段,用于唯一标识您的持久对象。
当从我的应用程序的主视图导航到它的详细视图时,我创建了 intent/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 作为 "extra" 传递,然后在我进入新的 activity 时再次访问数据库,但我想要知道为什么以上不起作用。我做错了什么吗?
我设法通过更改持久对象以使用 Sugar 注释而不是扩展 SugarRecord 来解决问题,即
来自:
public class Trx extends SugarRecord implements Serializable {
...
}
至:
@Table
public class Trx implements Serializable {
private Long id;
...
}
这解决了我缺少 ID 字段的问题
我有一个 Sugar ORM 持久对象声明如下:
public class Trx extends SugarRecord implements Serializable {
...
}
请注意, 当您扩展 SugarRecord 时,您继承了一个 id 字段,用于唯一标识您的持久对象。
当从我的应用程序的主视图导航到它的详细视图时,我创建了 intent/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 作为 "extra" 传递,然后在我进入新的 activity 时再次访问数据库,但我想要知道为什么以上不起作用。我做错了什么吗?
我设法通过更改持久对象以使用 Sugar 注释而不是扩展 SugarRecord 来解决问题,即
来自:
public class Trx extends SugarRecord implements Serializable {
...
}
至:
@Table
public class Trx implements Serializable {
private Long id;
...
}
这解决了我缺少 ID 字段的问题