尝试使用Parcelable在2个活动之间发送对象的Arraylist。当我尝试从接收活动中读取数据时,出现空对象引用错误。我已经阅读了许多教程和其他堆栈溢出线程,但似乎找不到我犯错的地方。任何帮助将不胜感激。
这是我的对象
的代码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);
}
}