Tengo dos actividades, en la primera, instancia una ArrayList de Object myObject. En la segunda actividad, necesito obtener este Arraylist. Encontré un tutorial: http://prasanta-paul.blogspot.com/2010/06/android-parcelable-example.html Implementé mi clase, me gustó su explicación.Android, ¿Cómo utilizar el método readTypedList correctamente en una clase Parcelable?
clase pública Chapitre implementa parcelable {
private int numero;
private String titre;
private String description;
private int nbVideo;
private ArrayList<Video> listeVideo;
public Chapitre(int numero, String titre, String description,
ArrayList<Video> listeVideo) {
this.numero = numero;
this.titre = titre;
this.description = description;
this.listeVideo = listeVideo;
this.nbVideo = listeVideo.size();
}
//Getters and Setters ...
private Chapitre(Parcel source) {
numero = source.readInt();
titre = source.readString();
description = source.readString();
nbVideo = source.readInt();
source.readTypedList(listeVideo, Video.CREATOR);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(numero);
dest.writeString(titre);
dest.writeString(description);
dest.writeInt(nbVideo);
dest.writeTypedList(listeVideo);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public Chapitre createFromParcel(Parcel in) {
return new Chapitre(in);
}
public Chapitre[] newArray(int size) {
return new Chapitre[size];
}
};
}
clase pública vídeo implementa parcelable {
private String titre;
private int numero;
private String url;
private String description;
private String imageUrl;
private Bitmap image;
private String duree;
/**
*
* @param nom
* @param numero
* @param url
* @param description
*/
public Video(String titre, String url, String description) {
super();
this.titre = titre;
this.url = url;
this.description = description;
}
public Video(int numero, String titre, String url, String description) {
super();
this.titre = titre;
this.url = url;
this.description = description;
this.numero = numero;
}
public Video(String titre,int numero, String url, String description, String imageUrl) {
super();
this.titre = titre;
this.url = url;
this.description = description;
this.imageUrl = imageUrl;
this.numero = numero;
setImage(fetchImage(imageUrl));
}
//Getters and Setters ...
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(titre);
dest.writeInt(numero);
dest.writeString(url);
dest.writeString(description);
dest.writeString(imageUrl);
dest.writeString(duree);
}
public Video(Parcel source){
/*
* Reconstruct from the Parcel
*/
Log.v("TAG", "ParcelData(Parcel source): time to put back parcel data");
titre = source.readString();
numero = source.readInt();
url = source.readString();
description = source.readString();
imageUrl = source.readString();
duree = source.readString();
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public Video createFromParcel(Parcel in) {
return new Video(in);
}
public Video[] newArray(int size) {
return new Video[size];
}
};
}
pero me da nullPointException en la fuente de línea". readTypedList (listeVideo, Video.CREATOR); " en la clase Chapitre.
07-21 10:07:28.212: ERROR/AndroidRuntime(682): FATAL EXCEPTION: main
07-21 10:07:28.212: ERROR/AndroidRuntime(682): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.genicorp.video.proto/com.genicorp.video.proto.Lecture}: java.lang.NullPointerException
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.app.ActivityThread.access$1500(ActivityThread.java:123)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Handler.dispatchMessage(Handler.java:99)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Looper.loop(Looper.java:126)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.app.ActivityThread.main(ActivityThread.java:3997)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at java.lang.reflect.Method.invokeNative(Native Method)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at java.lang.reflect.Method.invoke(Method.java:491)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at dalvik.system.NativeStart.main(Native Method)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): Caused by: java.lang.NullPointerException
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Parcel.readTypedList(Parcel.java:1630)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at com.genicorp.video.proto.Chapitre.<init>(Chapitre.java:70)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at com.genicorp.video.proto.Chapitre.<init>(Chapitre.java:65)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at com.genicorp.video.proto.Chapitre$1.createFromParcel(Chapitre.java:89)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at com.genicorp.video.proto.Chapitre$1.createFromParcel(Chapitre.java:1)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Parcel.readParcelable(Parcel.java:1981)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Parcel.readValue(Parcel.java:1846)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Parcel.readListInternal(Parcel.java:2092)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Parcel.readArrayList(Parcel.java:1536)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Parcel.readValue(Parcel.java:1867)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Parcel.readMapInternal(Parcel.java:2083)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Bundle.unparcel(Bundle.java:215)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.os.Bundle.getParcelableArrayList(Bundle.java:1151)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.content.Intent.getParcelableArrayListExtra(Intent.java:3634)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at com.genicorp.video.proto.Lecture.onCreate(Lecture.java:37)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
07-21 10:07:28.212: ERROR/AndroidRuntime(682): ... 11 more
ya he residuos1 día en esto, así que si alguien me pudiera ayudar, sería muy bueno,
Gracias de antemano
No estoy seguro de si es importante, pero algunas empresas fruncen el ceño al ver demasiada información. A partir de este producto sin limpiar, las personas pueden deducir para quién trabajas y qué tipo de aplicación estás haciendo en función de tus otras preguntas. Sanitizar su producción también le habría ayudado a encontrar su error. – Kheldar