Android 如何访问Parcelable对象中ArrayList的元素?
我在尝试将Parcelable实现到我的许多对象时遇到了困难。到目前为止,我有一个包含所有字符串和整数变量的项目类和另一个名为ParcelableProject的对象,它包含一个项目类。当我尝试以AllProjects的名称创建另一个Parcelable类时,我的困难就开始了,这个类包含一个由ParcelableProject对象组成的数组列表 我有这样一种方法,通过这种方法,我可以通过意图移动项目:Android 如何访问Parcelable对象中ArrayList的元素?,android,android-intent,android-fragments,arraylist,parcelable,Android,Android Intent,Android Fragments,Arraylist,Parcelable,我在尝试将Parcelable实现到我的许多对象时遇到了困难。到目前为止,我有一个包含所有字符串和整数变量的项目类和另一个名为ParcelableProject的对象,它包含一个项目类。当我尝试以AllProjects的名称创建另一个Parcelable类时,我的困难就开始了,这个类包含一个由ParcelableProject对象组成的数组列表 我有这样一种方法,通过这种方法,我可以通过意图移动项目: public void addProject(ParcelableProject p)
public void addProject(ParcelableProject p){
Intent i = new Intent(this.getActivity(), ProjectsFragment.class);
ArrayList<ParcelableProject> data = new ArrayList<ParcelableProject>();
data.add(p);
i.putParcelableArrayListExtra("projects", data);
}
但它给了我一个“无法从对象转换为ParcelableProject”的错误。访问项目变量的正确方法是什么?将有一个项目列表传递到我的ProjectsFragment中,因此该包裹需要包含项目的ArrayList,我只是不知道如何访问单个项目。这样做
Intent i = getIntent();
Bundle data=i.getExtras();
ArrayList<ParcelableProject> Projects= (ArrayList<ParcelableProject>) data.getParcelable("projects");
Intent i=getIntent();
Bundle data=i.getExtras();
ArrayList项目=(ArrayList)data.getParcelable(“项目”);
更新,试试这个
ArrayList<ParcelableProject> Projects= (ArrayList<ParcelableProject>) data.getParcelableArrayList("projects");
ArrayList Projects=(ArrayList)data.getParcelableArrayList(“Projects”);
试试这个
public class EmployeeData implements Parcelable {
String empName;
String empId;
String empAddress;
public EmployeeData(Parcel in) {
readFromParcel(in);
}
public EmployeeData(String name, String id, String address) {
this.empName = name;
this.empId = id;
this.empAddress = address;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
private void readFromParcel(Parcel in) {
empName = in.readString();
empId = in.readString();
empAddress = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeString(empName);
dest.writeString(empId);
dest.writeString(empAddress);
}
public static final Parcelable.Creator<EmployeeData> CREATOR = new Creator<EmployeeData>() {
@Override
public EmployeeData[] newArray(int size) {
// TODO Auto-generated method stub
return new EmployeeData[size];
}
@Override
public EmployeeData createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new EmployeeData(source);
}
};
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getEmpAddress() {
return empAddress;
}
public void setEmpAddress(String empAddress) {
this.empAddress = empAddress;
}
}
获取如下对象:
EmployeeData empData = new EmployeeData(name, id, address);
Bundle bundle = new Bundle();
bundle.putParcelable("DATA", empData);
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtras(bundle);
EmployeeData empData = getIntent().getParcelableExtra("DATA");
它还会在ArrayList Projects=data.getParcelable(“Projects”)处抛出一个NullPointerException;确实是这样,但我仍然在Projects=(ArrayList)data.getParcelable(“Projects”)中获得NullPointerException;我正在处理片段,当我创建新的意图时,我的两个变量是this.getActivity()和Fragment.class。我不确定第二个变量是否有效,或者我是否应该尝试创建一个新的活动?我知道,它仍然会在ProjectsFragment的OnCreate()上抛出一个NullPointerException
EmployeeData empData = getIntent().getParcelableExtra("DATA");