我会先开始说这句话,说我已经看到所有处理这个问题的其他文章,并尝试了所有这些文章。在使用parcelable的活动之间传递数组列表对象
我正在尝试做其他帖子中询问的同样的事情,即使用Intent将ArrayList的值从一个活动传递给另一个活动。
我觉得我已经正确实施了我的课程。下面是我使用的主类(Route_Class)。
public static final Parcelable.Creator<Route_Class> CREATOR =
new Parcelable.Creator<Route_Class>()
public Route_Class createFromParcel(Parcel in)
{
System.out.println("in Parcel In");
Route_Class route_class = new Route_Class();
route_class.layout_width2 = in.readString();
route_class.latitude = in.readDouble();
route_class.longitude = in.readDouble();
route_class.startingLat = in.readDouble();
route_class.startingLong = in.readDouble();
route_class.name = in.readString();
route_class.routeName = in.readString();
route_class.GeoPoints = in.readString();
route_class.layout_width = in.readString();
route_class.layout_height = in.readString();
route_class.orientation = in.readString();
route_class.xmlns = in.readString();
route_class.id = in.readString();
route_class.clickable = in.readInt() == 0;
route_class.enabled = in.readInt() == 0;
route_class.layout_height2 = in.readString();
route_class.apiKey = in.readString();
Bundle b = in.readBundle(GeoPoints_Class.class.getClassLoader());
route_class.geoPoints_arraylist = b.getParcelableArrayList("_geoPoints_arraylist");
return route_class;
}
@Override
public Route_Class[] newArray(int size)
{
return new Route_Class[size];
}
};
这里是在Route_Class用我的第二类(GeoPoints_Class)。
public static final Parcelable.Creator<GeoPoints_Class> CREATOR =
new Parcelable.Creator<GeoPoints_Class>()
{
public GeoPoints_Class createFromParcel(Parcel in) {
GeoPoints_Class geoPoints_class = new GeoPoints_Class();
System.out.println("In Parcel In for GEoPoints");
geoPoints_class.lat = in.readDouble();
geoPoints_class.lon = in.readDouble();
geoPoints_class.location = in.readString();
return geoPoints_class;
接下来就是我把一个对象..
Intent i = new Intent(getApplicationContext(), route.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Bundle b = new Bundle();
b.putParcelableArrayList("route_Classes_temp", route_Classes);
i.putExtra("selectiontemp",parent.getItemAtPosition(pos).toString());
i.putExtras(b);
startActivityForResult(i, 100);
最后,在这里我尝试获得对象...
Bundle b = this.getIntent().getExtras();
route_Classes = b.getParcelableArrayList("route_Classes_temp");
userMapSelection = b.getString("selectiontemp");
我我一直试图使用这个作为资源:http://androidideasblog.blogspot.com/2010/02/passing-list-of-objects-between.html但它似乎并不工作。运行应用程序时,我发现了以下错误(任何线索,坏的幻数引用):
11-09 14:48:52.951: E/Bundle(1128): readBundle: trace = java.lang.RuntimeException
11-09 14:48:52.951: E/Bundle(1128): at android.os.Bundle.readFromParcelInner(Bundle.java:1580)
11-09 14:48:52.951: E/Bundle(1128): at android.os.Bundle.<init>(Bundle.java:82)
11-09 14:48:52.951: E/Bundle(1128): at android.os.Parcel.readBundle(Parcel.java:1381)
提前感谢!
您演示如何阅读可接受的包裹,但是如何编写它们? http://developer.android.com/reference/android/os/Parcelable.html – auselen
请按照书写宗地的方式添加课程的全部代码也很重要。 –
我贴[这里](http://stackoverflow.com/questions/13079143/passing-arraylist-object-between-activities-using-parcelable),并被告知我提供了太多。哈哈。任何帮助表示赞赏。 – kbarnes