Android 如何访问Parcelable对象中ArrayList的元素?

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)

我在尝试将Parcelable实现到我的许多对象时遇到了困难。到目前为止,我有一个包含所有字符串和整数变量的项目类和另一个名为ParcelableProject的对象,它包含一个项目类。当我尝试以AllProjects的名称创建另一个Parcelable类时,我的困难就开始了,这个类包含一个由ParcelableProject对象组成的数组列表

我有这样一种方法,通过这种方法,我可以通过意图移动项目:

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