如何放置和获取parcelable数组列表的意图

时间:2015-12-16 16:11:27

标签: android-intent arraylist nullpointerexception parcelable

我尝试将这个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 :/

1 个答案:

答案 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");

希望这会对你有所帮助.. !!如果您有任何疑问,请发表评论。