【发布时间】:2016-09-29 07:00:38
【问题描述】:
我正在尝试将“HashMap pointMap”这个哈希映射发送到一个新的活动, 这是我发送地图的地方, 在 Main2Activity 类的 oncreate 方法中
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent = new Intent(Main2Activity.this, OutActivity.class);
Log.d("Null",dv.getPointMap().toString());
myIntent.putExtra("hashMap", dv.getPointMap());
//pass input int to next activity
Main2Activity.this.startActivity(myIntent);
}
});
这里的 dv 是一个 DrawingView 类,它扩展了 View,它有方法调用 getPointMap 它返回 hashMap
这就是我从下一个活动中收到它的方式
hashMap = (HashMap<Integer , Point>) this.getIntent().getSerializableExtra("hashMap");
在发送之前我检查了它是否有任何元素,在日志中它显示它有元素 但我的问题是当代码运行时它给出了这个异常
致命异常:主要 进程:com.example.chalaka.myapplication,PID:22046 java.lang.RuntimeException:包裹:无法封送值 com.example.chalaka.myapplication.Point@293492bd 在 android.os.Parcel.writeValue(Parcel.java:1337) 在 android.os.Parcel.writeMapInternal(Parcel.java:614) 在 android.os.Parcel.writeMap(Parcel.java:598) 在 android.os.Parcel.writeValue(Parcel.java:1255) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:638) 在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313) 在 android.os.Bundle.writeToParcel(Bundle.java:1096) 在 android.os.Parcel.writeBundle(Parcel.java:663) 在 android.content.Intent.writeToParcel(Intent.java:7335) 在 android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2485) 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1486) 在 android.app.Activity.startActivityForResult(Activity.java:3796) 在 android.app.Activity.startActivityForResult(Activity.java:3744) 在 android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:784) 在 android.app.Activity.startActivity(Activity.java:4067) 在 android.app.Activity.startActivity(Activity.java:4035) 在 com.example.chalaka.myapplication.Main2Activity$1.onClick(Main2Activity.java:93) 在 android.view.View.performClick(View.java:4808) 在 android.view.View$PerformClick.run(View.java:19918) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5536) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1397) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1192)
请帮我解决这个问题...
【问题讨论】:
-
尝试使用 Parcelable: developer.android.com/reference/android/os/Parcelable.html insted of HashMap。旨在保存 Intent 参数。