Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Intent.putParcelableArrayListExtra()方法和Parcelable接口,我只想在两个活动之间传输数据_Java_Android - Fatal编程技术网

Java 如何使用Intent.putParcelableArrayListExtra()方法和Parcelable接口,我只想在两个活动之间传输数据

Java 如何使用Intent.putParcelableArrayListExtra()方法和Parcelable接口,我只想在两个活动之间传输数据,java,android,Java,Android,看看我的代码,有没有错 活动一: Intent intent = new Intent(SendActivity.this, PickContactsActivity.class); startActivityForResult(intent, 20); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requ

看看我的代码,有没有错

活动一:

Intent intent = new Intent(SendActivity.this, PickContactsActivity.class);
startActivityForResult(intent, 20);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        ArrayList<PickBean> cons = data.getParcelableArrayListExtra("data");
        for (int i = 0; i < cons.size(); i++) {
            JLog.e(LOG_TAG, "displayName:" + cons.get(i).displayName + "displayNumber" + cons.get(i).displayNumber);
        }
    }
}
Intent data = new Intent();
ArrayList<PickBean> cons = new ArrayList<PickBean>();
for (int i = 0; i < conData.size(); i++) {
        cons.add(new PickBean(conData.get(i).displayName, conData.get(i).displayNumber));
    }
}
data.putParcelableArrayListExtra("data", cons);
setResult(RESULT_OK, data);
finish();
public class PickBean implements Parcelable {
    public String displayName;
    public String displayNumber;

    public boolean selected = false;

    public PickBean() {
        super();
    }

    public PickBean(String displayName, String displayNumber) {
        super();
        this.displayName = displayName;
        this.displayNumber = displayNumber;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(displayName);
        dest.writeString(displayNumber);
    }


    public final Parcelable.Creator<PickBean> CREATOR = new Parcelable.Creator<PickBean>() { 
        @Override 
        public PickBean createFromParcel(Parcel source) { 

            return new PickBean(source.readString(), source.readString()); 
        } 

        @Override 
        public PickBean[] newArray(int size) { 
            return new PickBean[size]; 
        } 
    }; 
}
com.chishacai.smscenter.bean.PickBean,但得到null

Caused by: java.lang.NullPointerException: expected receiver of type 
com.chishacai.smscenter.bean.PickBean, but got null
请帮助我如何处理这个问题,谢谢。

//数据模型类
//DataModel Class
 package com.DEECOUP.DataModel;


import android.os.Parcel;
import android.os.Parcelable;

public class OrderedData implements Parcelable {

private String _title, _subtitle, _person_type, _processed_name;
private Integer _price, _quantity;

public OrderedData(String title,  String subtitle , String person_type, String processed_name,
        Integer price, Integer quantity)
{
    _title = title;
    _subtitle =subtitle ; 
    _person_type = person_type;
    _processed_name = processed_name;
    _price = price;
    _quantity = quantity;
}


public OrderedData(Parcel in) {
    // TODO Auto-generated constructor stub

    String[] data = new String[6];

     in.readStringArray(data);
        _title = data[0];
        _subtitle =  data[1];
        _person_type=  data[2];
        _processed_name =  data[3];
        _price =  Integer.parseInt(data[4]);
        _quantity = Integer.parseInt(data[5]);
}


public String getTitle()
{
    return _title; 
}

public String getSubTitle()
{
    return _subtitle; 
}

public String getPersonType()
{
    return _person_type; 
}

public String getProcessedName()
{
    return _processed_name; 
}

public Integer getPrice()
{
    return _price; 
}

public Integer getQuantity()
{
    return _quantity; 
}


@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}


@Override
public void writeToParcel(Parcel dest, int flags) {
     dest.writeStringArray(new String[] {
                this._title,
                this._subtitle,
                this._person_type,
                this._processed_name,
                String.valueOf(this._price),
                String.valueOf(this._quantity)
            });
}


public static final Parcelable.Creator<OrderedData> CREATOR = new Parcelable.Creator<OrderedData>() {
    public OrderedData createFromParcel(Parcel in) {

         return new OrderedData(in); 
    }

    public OrderedData[] newArray(int size) {
        return new OrderedData[size];
    }
};
}

//button click to send data on second activity
case R.id.btnOrderDetails:
        Intent intent = new Intent(SenderActiviry.this,
                RecieverActivity.class);
        intent.putParcelableArrayListExtra("data", orderedDataList);
        startActivity(intent);
        break;

   //  Add data to datamodel from first addtivity
global list
ArrayList<OrderedData> orderedDataList = new ArrayList<OrderedData>();

   and in on create
  orderedDataList.add(new OrderedData(_title, _subTitle,_person_Type,   _processName,_pRice,getFinalQuantity));
包com.DEECOUP.DataModel; 导入android.os.packet; 导入android.os.Parcelable; 公共类OrderedData实现了Parcelable{ 私有字符串\u title、\u subtitle、\u person\u type、\u processed\u name; 私有整数_价格,_数量; public OrderedData(字符串标题、字符串副标题、字符串人物类型、字符串处理名称、, 整数价格,整数数量) { _头衔=头衔; _副标题=副标题; _人员类型=人员类型; _已处理的\u名称=已处理的\u名称; _价格=价格; _数量=数量; } 公共订单数据(包裹中){ //TODO自动生成的构造函数存根 字符串[]数据=新字符串[6]; in.readStringArray(数据); _标题=数据[0]; _副标题=数据[1]; _人员类型=数据[2]; _已处理的_name=数据[3]; _price=Integer.parseInt(数据[4]); _数量=整数.parseInt(数据[5]); } 公共字符串getTitle() { 返回标题; } 公共字符串getSubTitle() { 返回字幕; } 公共字符串getPersonType() { 返回人类型; } 公共字符串getProcessedName() { 返回已处理的名称; } 公共整数getPrice() { 退货价格; } 公共整数getQuantity() { 退货数量; } @凌驾 公共int描述内容(){ //TODO自动生成的方法存根 返回0; } @凌驾 公共无效写入包裹(包裹目的地,内部标志){ 目标writeStringArray(新字符串[]){ 这是我的名字, 这是我的副标题, 这个._人_类型, 这是我的名字, String.valueOf(此价格), String.valueOf(此._数量) }); } public static final Parcelable.Creator=新建Parcelable.Creator(){ public OrderedData createFromParcel(中的地块){ 返回新的OrderedData(在中); } 公共医嘱数据[]新数组(整数大小){ 返回新的OrderedData[大小]; } }; } //按钮单击以发送第二个活动的数据 案例R.id.btnOrderDetails: 意向意向=新意向(SenderActiviry.this, 接收活动(类); intent.putParcelableArrayListExtra(“数据”,OrderedCatalist); 星触觉(意向); 打破 //从第一个AddActivity向datamodel添加数据 全球名单 ArrayList OrderedCatalist=新的ArrayList(); 在《创造》中 添加(新的OrderedData(_title,_subTitle,_person,_Type,_processName,_pRice,getFinalQuantity));
传递数据

Intent intent = new Intent(SendActivity.this, PickContactsActivity.class); 
Bundle bundle;
bundle.putParcelableArrayList("data", cons); // Be sure con is not null here
intent.putExtras(bundle);
获取数据

 ArrayList<PickBean> arrayParents = intent.getParcelableArrayListExtra("data");

请对您的代码添加一些注释(对差异的描述会更好)您能提供完整的日志目录吗??确保您的数组
con
在作为
putParcelableArrayList(“数据”,cons)传递时不为空
 ArrayList<PickBean> arrayParents = intent.getParcelableArrayListExtra("data");
 public final Parcelable.Creator<PickBean> CREATOR = new Parcelable.Creator<PickBean>() { 
        @Override 
        public PickBean createFromParcel(Parcel source) { 

            return new PickBean(source); 
        } 

        @Override 
        public PickBean[] newArray(int size) { 
            return new PickBean[size]; 
        } 
    }; 

 public PickBean(Parcel data) {

        this.displayName = data.readString();
        this.displayNumber = data.readString();
 }