gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:27:12 27 4
gpt4 key购买 nike

看看我的代码,有没有错。

Activity 一:

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

Activity 二:

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

PickBean 代码:

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];
}
};
}

它总是会抛出

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=20,
result=-1, data=Intent { (has extras) }} to activity
{com.chishacai.smscenter/com.chishacai.smscenter.SendActivity}: java.lang.NullPointerException: expected receiver of type

com.chishacai.smscenter.bean.PickBean,但是得到了null

Caused by: java.lang.NullPointerException: expected receiver of type 
com.chishacai.smscenter.bean.PickBean, but got null

请帮我解决这个问题,谢谢。

最佳答案

传递数据:

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

将方法 newArray 替换为:

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

关于java - 如何使用 Intent.putParcelableArrayListExtra() 方法和 Parcelable 接口(interface),我只想在两个 Activity 之间传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20138757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com