我试图通过意图将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。 非常感谢!
答案 0 :(得分:0)
代替
HashMap<Integer, JSONObject> myData
您应该使用
HashMap<Integer, String> myData
并将项目添加为字符串而不是JSONObject:
myData.put(0, myJsonObject.toString());
然后,在第二个活动中,在需要时创建JSON:
new JSONObject(myData.get(0));
原因:
JSONObject在默认情况下不是可序列化的,但是String是(请注意它实现了可序列化的)。