1

У меня возникли трудности при попытке реализовать Parcelable для нескольких моих объектов. Пока у меня есть класс Project со всеми переменными String и integer и еще один объект ParcelableProject, который содержит один класс Project. Моя трудность начинается, когда я пытался создать еще один класс Parcelable по имени AllProjects, этот класс содержит единственный список массивов, состоящий из объектов ParcelableProject.Как получить доступ к элементу массива ArrayList внутри объекта Parcelable?

У меня есть этот метод, с помощью которого я двигаюсь проекты через намерение:

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

    } 

Кроме того, в моем ProjectsFragment я пытаюсь получить доступ к этой ArrayList данные через:

Intent i = getActivity().getIntent(); 
    Bundle data=i.getExtras(); 
    ArrayList Projects= data.getParcelable("projects"); 
    ParcelableProject pProj=Projects.get(0); 

Но это дает мне " не может конвертировать из Object to ParcelableProject ". Каков правильный способ доступа к переменным Project? Будет представлен список из них, который будет передан в мой ProjectFragment, поэтому Parcelable должен содержать ArrayList проектов, я просто не знаю, как получить доступ к отдельным.

+0

Он также бросает мне NullPointerException в ArrayList Проекты = data.getParcelable ("проекты"); – yanki

ответ

0

ли этот путь

Intent i = getIntent(); 
    Bundle data=i.getExtras(); 
    ArrayList<ParcelableProject> Projects= (ArrayList<ParcelableProject>) data.getParcelable("projects"); 

UPDATE попробовать это

ArrayList<ParcelableProject> Projects= (ArrayList<ParcelableProject>) data.getParcelableArrayList("projects"); 
+0

Я сделал, но я все еще получаю исключение NullPointerException в Projects = (ArrayList ) data.getParcelable ("projects"); – yanki

0

Попробуйте этот объект

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

} 

Put как:

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

Я работаю с фрагментами, когда я создаю новый Intent, моими двумя переменными являются this.getActivity() и Fragment.class. Я не уверен, будет ли работать вторая переменная, или я должен попытаться создать новую активность? – yanki

+0

Вторая переменная должна также работать .. попробуйте один раз – Sonali8890

+0

У меня есть, это все равно бросает мне NullPointerException в OnCreate() проектовFragment – yanki

Смежные вопросы