通过intent额外传递HashMap <integer,jsonobject =“”>

时间:2018-07-24 13:27:25

标签: android android-activity

我试图通过意图将HashMap从片段传递到活动,但没有成功。 这是我的代码:

    private HashMap<Integer, JSONObject> myData;

    Intent intent = new Intent(this.getActivity(),MyActivity.class);
    intent.putExtra("myMap", myData);
    startActivity(intent);

我得到了runtimeExeption:

    java.lang.RuntimeException: Parcel: unable to marshal value

如果有人可以帮助我,我将很高兴! 我需要一种解决它的方法,我知道JSONObject不可序列化。 该值不是自定义对象,因此我不能在那里实现Serializable。 非常感谢!

1 个答案:

答案 0 :(得分:0)

代替

HashMap<Integer, JSONObject> myData

您应该使用

HashMap<Integer, String> myData

并将项目添加为字符串而不是JSONObject:

myData.put(0, myJsonObject.toString());

然后,在第二个活动中,在需要时创建JSON:

new JSONObject(myData.get(0));

原因:

JSONObject在默认情况下不是可序列化的,但是String是(请注意它实现了可序列化的)。