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