我想使用Intent传递RealmObject,我正在从Serilizable中进行操作,但是它抛出了java.lang.ClassCastException:io.realm.RealmResults无法转换为java.io.Serializable
// else方法正在运行并引发异常 //标志的值为1。
lay_upcoming.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("flag", String.valueOf(flag));
Log.i("flag", String.valueOf(img_id));
Log.i("flag", String.valueOf(flag));
if (flag == 0) {
bundle = new Bundle();
eventFragment = new EventFragment();
bundle.putSerializable("Data", (Serializable) data2);
bundle.putSerializable("CustomerData", (Serializable) customerData);
bundle.putInt("img_id", img_id2);
eventFragment.setArguments(bundle);
getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up).addToBackStack(null).replace(R.id.fragment_container, eventFragment).commit();
} else {
bundle = new Bundle();
eventFragment = new EventFragment();
bundle.putSerializable("Data", (Serializable) allEventModels);
bundle.putSerializable("CustomerData", (Serializable) customerDataModels);
bundle.putInt("img_id", img_id);
eventFragment.setArguments(bundle);
getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up).addToBackStack(null).replace(R.id.fragment_container, eventFragment).commit();
}
}
});
答案 0 :(得分:3)
您将无法使用Intent,Parcelables等传递Realm对象。您的解决方案是传递一个标识符,让目标活动查询Realm本身并检索该对象。
您尚未在问题中包含类定义,因此我无法为您提供完整的答案。但是我假设您已经定义了主键,或者可以将其他独特的ID / ID组合作为字符串或整数传递给Intent,然后通过查询来检索对象。
答案 1 :(得分:0)
如果要通过意图在两个组件之间传递领域对象 您可以利用
用于序列化的Gson使用intent.putString()
您可以使工具可打包到您的领域对象,并使用Bundle将其传递
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putParcelable("YOUR_OBJECT_KEY",YOUR_OBJECT);
intent.putExtras(bundle);
然后检索
getIntent().getExtras().getParcelable("YOUR_OBJECT_KEY")