如何把并获得parcelable数组列表的意图 [英] how to put and get intent of parcelable array list

查看:143
本文介绍了如何把并获得parcelable数组列表的意图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试从一个活动发送此zaznam的ArrayList第二,它不会工作。

第一个活动

 的ArrayList<&经纬度GT; zaznam =新的ArrayList<&经纬度GT;();
zaznam.add(新经纬度(66,55));
zaznam.add(新经纬度(44,77));
zaznam.add(新经纬度(11,99));意图int​​ent2 =新意图(TrackerActivity.this,MakacMapa.​​class);
intent2.putParcelableArrayListExtra(Zaznam,zaznam);

第二项活动

 意向意图=新的Intent();
ArrayList的<&经纬度GT; zaznam = intent.getParcelableArrayListExtra(Zaznam); //这里它抛出NullPointerExeption:/


解决方案

你是不是传递数组列表作为parcelable。您需要定制用于实现Parcelable模型(LatLong网)。试试下面的code。

LatLong.java

 公共类的LatLong实现Parcelable {诠释纬度,经度;公众诠释的LatLong(INT纬度,INT长){
this.lat =纬度;
this.long =长;
}
公众诠释setLat(INT LAT){
this.lat =纬度;
}
公众诠释getLat(){
返回纬度;
}
公众诠释setLong(INT长){
this.long =长;
}公众诠释getLong之(){
返回长;
}
       @覆盖
       公众诠释describeContents(){
       返回0;
       }        @覆盖
        公共无效writeToParcel(DEST包裹,INT标志){
        dest.writeInt(LAT);
        dest.writeInt(长);
        }
        公共静态最后的造物主<&的LatLong GT; CREATOR =新的创造者和LT;&的LatLong GT;(){
         @覆盖
         公众的LatLong createFromParcel(包裹源){
         返回新的LatLong(源);
         }         @覆盖
         公众的LatLong [] newArray(INT大小){
         返回新的LatLong【尺寸】;
       }
     };
} //的LatLong完

Activity1.java

 的ArrayList<&经纬度GT; zaznam =新的ArrayList<&经纬度GT;();
zaznam.add(新经纬度(66,55));
zaznam.add(新经纬度(44,77));
zaznam.add(新经纬度(11,99));

低于code是重要的。路过名单Parcelable。

 意图int​​ent2 =新意图(TrackerActivity.this,MakacMapa.​​class);
intent2.putParcelableArrayListExtra(Zaznam(ArrayList的&LT ;?延伸Parcelable>)zaznam);

Activity2.java

 意向意图=新的Intent();
ArrayList的<&经纬度GT; zaznam = getIntent()getParcelableArrayListExtra(Zaznam);

希望这会帮助你.. !!如果您有任何疑问评论我。

i try to send this zaznam Arraylist from one activity to second and it wont works..

first activity

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);

Second activity

Intent intent = new Intent();
ArrayList<LatLng> zaznam = intent.getParcelableArrayListExtra("Zaznam");  //and here it throws NullPointerExeption :/

解决方案

you are not passing the array list as parcelable. You need to customize the model (LatLong) used to implement Parcelable. Try the below code.

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));

Below code is important. Passing the list as 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");

Hope this will help you.. !! comment me if you have any query.

这篇关于如何把并获得parcelable数组列表的意图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆