我试图将此类的对象发送给其他活动。我使用parcelabler.com来生成代码。问题是当我声明意图时,Eclispse说putExtra(String,GrupoMuscular)方法对于Intent类型是未定义的。我有一个错误的parcelable实现?使用parcelable向另一个活动发送对象
public class GrupoMuscular implements Parcelable {
private int id;
private static int id_aux = 0;
private String nome;
private int imagem;
private ArrayList<Exercicio> exercicios;
public GrupoMuscular(String nome, int img) {
//super();
id = id_aux;
id_aux++;
this.nome = nome;
this.imagem = img;
this.exercicios = new ArrayList<Exercicio>();
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getImagem() {
return imagem;
}
public void setImagem(int imagem) {
this.imagem = imagem;
}
public ArrayList<Exercicio> getGruposMuscular() {
return exercicios;
}
public void addExercicio(int id, String nome, String descricao, int imagem){
Exercicio ex = new Exercicio(id, nome, descricao, imagem);
exercicios.add(ex);
}
public void setGruposMuscular(ArrayList<Exercicio> gruposMuscular) {
this.exercicios = gruposMuscular;
}
public ArrayList<Exercicio> getExercicios() {
return exercicios;
}
public void setExercicios(ArrayList<Exercicio> exercicios) {
this.exercicios = exercicios;
}
public int getId() {
return id;
protected GrupoMuscular(Parcel in) {
id = in.readInt();
nome = in.readString();
imagem = in.readInt();
if (in.readByte() == 0x01) {
exercicios = new ArrayList<Exercicio>();
in.readList(exercicios, Exercicio.class.getClassLoader());
} else {
exercicios = null;
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(nome);
dest.writeInt(imagem);
if (exercicios == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeList(exercicios);
}
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<GrupoMuscular> CREATOR = new Parcelable.Creator<GrupoMuscular>() {
@Override
public GrupoMuscular createFromParcel(Parcel in) {
return new GrupoMuscular(in);
}
@Override
public GrupoMuscular[] newArray(int size) {
return new GrupoMuscular[size];
}
};
}
活动意图:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent;
intent = new Intent(ExerciciosActivity.this, ListaExerciciosActivity.class);
intent.putExtra("musculos", gruposMusculares.get(position));
startActivity(intent);
}});
}
第二个参数需要一个'List'。 – Emmanuel
如果你只是使用'intent.putExtra(String,(Parcelable)GrupoMuscular)',它就会工作。尝试一下。 – joao2fast4u
@ joao2fast4u但我想发送此数组的对象,而不是所有的对象数组。这就是为什么我把gruposMusculares.get(位置)。 –