Попытка использовать Parcelable для отправки Arraylist объектов между двумя действиями. Когда я пытаюсь прочитать данные из принимающей активности, я получаю ошибку ссылки на нулевой объект. Я прочитал много руководств и других потоков переполнения стека, но не могу найти, где я сделал ошибку. Любая помощь будет принята с благодарностью.
Это код моего Object
public class Workout implements Parcelable {
private String name;
private int time;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
public Workout(String name, int time){
this.name = name;
this.time = time;
}
public static final Parcelable.Creator<Workout> CREATOR = new Parcelable.Creator<Workout>() {
public Workout createFromParcel(Parcel in) {
return new Workout(in);
}
public Workout[] newArray(int size) {
return new Workout[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(name);
parcel.writeInt(time);
}
private Workout(Parcel in){
this.name = in.readString();
this.time = in.readInt();
}
}
Вот код из второе действие
this.btnSaveRoutine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(edRoutineName.getText().toString().isEmpty()){
edRoutineName.setError("Routine name empty");
} else {
intent = new Intent();
intent.putExtra("routineName",edRoutineName.getText().toString());
intent.putParcelableArrayListExtra("workouts", workouts);
setResult(Activity.RESULT_OK, intent);
finish();
}
}
});
И код из основного действия
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK){
//save routine to db and display on recyclerview
String routineName = data.getStringExtra("routineName");
workouts = data.getExtras().getParcelableArrayList("workouts");
Toast.makeText(getApplicationContext(), "Name is " + routineName, Toast.LENGTH_LONG ).show();
routines.add(new Routine(routineName, workouts));
this.mRoutineAdapter = new RoutineAdapter(routines);
this.rvRoutines.setAdapter(this.mRoutineAdapter);
}
}