当尝试通过使用包将自定义对象从活动传递到片段时,尝试在片段中检索空包时,我一直得到空包。我正在使用宗地,因为它们是自定义数组列表的唯一选择。任何帮助表示赞赏!
为了证明我的课是可拆分的:
public class Exercise implements Parcelable{
private String mName;
private String mMuscleGroup;
private String mType;
private String mEquipment;
private float mWeight;
private int mReps;
private int mSet;
public Exercise(String name, String MuscleGroup, String type, String equipment, float weight, int reps, int set) {
mName = name;
mMuscleGroup = MuscleGroup;
mType = type;
mEquipment = equipment;
mWeight = weight;
mReps = reps;
mSet = set;
}
private Exercise(Parcel in) {
mName = in.readString();
mMuscleGroup = in.readString();
mType = in.readString();
mEquipment = in.readString();
mWeight = in.readFloat();
mReps = in.readInt();
mSet = in.readInt();
}
public static final Creator<Exercise> CREATOR = new Creator<Exercise>() {
@Override
public Exercise createFromParcel(Parcel in) {
return new Exercise(in);
}
@Override
public Exercise[] newArray(int size) {
return new Exercise[size];
}
};
public String getName() {
return mName;
}
public String getMuscleGroup() {
return mMuscleGroup;
}
public String getType() {
return mType;
}
public String getEquipment() {
return mEquipment;
}
public float getWeight() { return mWeight; }
public int getReps() { return mReps; }
public int getSet() { return mSet; }
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(mName);
parcel.writeString(mMuscleGroup);
parcel.writeString(mType);
parcel.writeString(mEquipment);
parcel.writeFloat(mWeight);
parcel.writeInt(mReps);
parcel.writeInt(mSet);
}
}
'''
我正在从以下位置传递捆绑活动:
@Override
protected void onPause() {
// send ArrayList of exercises to WorkoutsFragment
WorkoutsFragment workoutsFragment = new WorkoutsFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("exercise", exercise);
workoutsFragment.setArguments(bundle);
// clear exercise ArrayList
super.onPause();
}
片段接收包:
Bundle bundle = this.getArguments();
if(bundle != null) {
exercise = bundle.getParcelableArrayList("exercise");
}
答案 0 :(得分:0)
您需要使用bundle.putParcelableArrayList放置Parcelable列表对象,而不是putSerializable
如果类型不匹配,则为空