我尝试将这个zaznam Arraylist从一个活动发送到第二个,它不会工作..
第一项活动
ArrayList<LatLng> zaznam = new ArrayList<LatLng>();
zaznam.add(new LatLng(66,55));
zaznam.add(new LatLng(44,77));
zaznam.add(new LatLng(11,99));
Intent intent2 = new Intent(TrackerActivity.this, MakacMapa.class);
intent2.putParcelableArrayListExtra("Zaznam",zaznam);
第二项活动
Intent intent = new Intent();
ArrayList<LatLng> zaznam = intent.getParcelableArrayListExtra("Zaznam"); //and here it throws NullPointerExeption :/
答案 0 :(得分:0)
您没有将数组列表作为parcelable传递。您需要自定义用于实现Parcelable的模型(LatLong)。请尝试以下代码。
<强> LatLong.java 强>
public class LatLong implements Parcelable {
int lat, long;
public int LatLong (int lat, int long) {
this.lat = lat;
this.long = long;
}
public int setLat(int lat) {
this.lat = lat;
}
public int getLat() {
return lat;
}
public int setLong(int long) {
this.long = long;
}
public int getLong() {
return long;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(lat);
dest.writeInt(long);
}
public static final Creator<LatLong> CREATOR = new Creator<LatLong>() {
@Override
public LatLong createFromParcel(Parcel source) {
return new LatLong(source);
}
@Override
public LatLong[] newArray(int size) {
return new LatLong[size];
}
};
}// LatLong Ends
<强> Activity1.java 强>
ArrayList<LatLng> zaznam = new ArrayList<LatLng>();
zaznam.add(new LatLng(66,55));
zaznam.add(new LatLng(44,77));
zaznam.add(new LatLng(11,99));
下面的代码非常重要。将列表作为Parcelable传递。
Intent intent2 = new Intent(TrackerActivity.this, MakacMapa.class);
intent2.putParcelableArrayListExtra("Zaznam", (ArrayList<? extends Parcelable>) zaznam);
<强> Activity2.java 强>
Intent intent = new Intent();
ArrayList<LatLng> zaznam = getIntent().getParcelableArrayListExtra("Zaznam");
希望这会对你有所帮助.. !!如果您有任何疑问,请发表评论。