我正在尝试使用以下代码将gson序列化对象传递给intent
intent.putExtra("com.example", vo); // vo is the gson serialised object.
但是它抛出了运行时异常,请帮助。
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.d.a)
at android.os.Parcel.writeSerializable(Parcel.java:1285)
at android.os.Parcel.writeValue(Parcel.java:1233)
at android.os.Parcel.writeMapInternal(Parcel.java:591)
at android.os.Bundle.writeToParcel(Bundle.java:1646)
at android.os.Parcel.writeBundle(Parcel.java:605)
at android.content.Intent.writeToParcel(Intent.java:6831)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1927)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1419)
at android.app.Activity.startActivityForResult(Activity.java:3390)
at android.app.Activity.startActivityForResult(Activity.java:3351)
at android.app.Activity.startActivity(Activity.java:3587)
at android.app.Activity.startActivity(Activity.java:3555)发布于 2014-02-14 01:56:01
不,你用错了方法。
将对象放入意图中,如下所示:
Gson gson = new Gson();
Intent intent = new Intent(Source.this, Target.class);
intent.putExtra("obj", gson.toJson(yourObject));并在另一个活动中获取对象,如下所示:
Gson gson = new Gson();
String strObj = getIntent().getStringExtra("obj");
SourceObject obj = gson.fromJson(strObj, SourceObject.class);发布于 2017-12-14 03:34:11
我将implements Serializable添加到我的模型和我的模型使用的其他模型(子模型)中。然后,我可以通过Intent传递GSON对象:
public class MyModel implements Serializable {
SubModel subModel;
}
public class SubModel implements Serializable {
...
}在片段中:
Intent startIntent = new Intent(getContext(), NextActivity.class);
startIntent.putExtra("mymodel", myModelObject);
startActivity(startIntent);在下一练习中:
Intent intent = getIntent();
MyModel mymodel = (MyModel) intent.getSerializableExtra("mymodel");
// test if we get the model correctly:
setTitle(mymodel.getName());发布于 2017-11-09 22:34:31
当您的对象或模型是extend时,您需要使用:
Step1:
Gson gson = new GsonBuilder() .setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})
.create();和
intent.putExtra("userfrom",gson.toJson(obj));Step2:
Gson gson = new GsonBuilder().create();
user =gson.fromJson(getIntent().getStringExtra("userfrom"),User.class);我将其用于pass数据,但用于翻新
https://stackoverflow.com/questions/21761438
复制相似问题