【发布时间】:2017-11-12 00:08:36
【问题描述】:
在android中我有一个ArrayList如下:
ArrayList<SinglePoint> pointlist = new ArrayList<SinglePoint>();
我将与内容。完成当前活动后,我需要将此对象pointlist 传输到新活动。我尝试了以下方法(正如我在几个 SO 答案中发现的那样):
intent.putParcelableArrayListExtra("pointlist", pointlist);
在新活动中我有一行
ArrayList<SinglePoint> pointlist = (ArrayList<SinglePoint>)getIntent().getSerializableExtra("pointlist");
但是对于第二行我得到了错误
Error:(40, 56) error: incompatible types: ArrayList<SinglePoint> cannot be converted to ArrayList<? extends Parcelable>
如何解决这个问题?
我也尝试了here 的建议,但也不起作用。
并按照建议使用以下代码here
intent.putExtra("pointlist", pointlist);
和
ArrayList<SinglePoint> pointlist = (ArrayList<SinglePoint>)getIntent().getSerializableExtra("pointlist");
我得到了错误
java.lang.RuntimeException: Parcel: unable to marshal value com.impyiablue.checkpoint.tools.SinglePoint@2f4a7cec
【问题讨论】:
-
SinglePoint 是否实现 Parcelable?
-
没有。什么是 Parcelable?
-
您需要 SinglePoint 实现 Parcelable 才能将列表传递给其他活动。 developer.android.com/reference/android/os/Parcelable.html
-
如果你想实现 Parcelable,你需要额外的代码。如果你想使用 Serializable,你只需要将实现 Serializable 添加到你的 SinglePoint。像这样:
SinglePoint implements Serializable{ } -
@Alex 使用 parcelable 而不是 searlization 3pillarglobal.com/insights/…