オブジェクト(parcelable)の配列リストをインテントに渡して処理したいと考えています。arrayList には 3 つのオブジェクトが含まれており、それを次のインテントに渡すと、3 番目のオブジェクトが失われるため、リストを読み込もうとすると null ポインターになります。
telecharger.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
recupParcours= new GetParcours(idLangue);
recupParcours.start();
try {
recupParcours.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(Parcours parcours: recupParcours.getListeParcours())
System.out.println("Parcours: " + parcours);
Intent intent = new Intent();
intent.putParcelableArrayListExtra("listeParcoursADL",recupParcours.getListeParcours());
intent.setClass(ChoiceLanguage.this,Test.class);
startActivity(intent);
}
});
logcatで表示できます
12-14 13:53:00.395: I/System.out(10884): Parcours: com.dev.entity.Parcours@41d6f130
12-14 13:53:00.395: I/System.out(10884): Parcours: com.dev.entity.Parcours@41e05398
12-14 13:53:00.395: I/System.out(10884): Parcours: com.dev.entity.Parcours@41e07e00
今テストクラスで
public class Test extends Activity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.download_parcours);
ArrayList<Parcours>listeParcours= getIntent().getParcelableArrayListExtra("listeParcoursADL");
for(Parcours parcours: listeParcours)
System.out.println("Parcours: " + parcours);
}
}
ログに表示できます:
12-14 13:53:12.223: I/System.out(10884): Parcours: com.dev.entity.Parcours@41bf03e8
12-14 13:53:12.223: I/System.out(10884): Parcours: com.dev.entity.Parcours@41ba5310
12-14 13:53:12.223: I/System.out(10884): Parcours: null
最後のオブジェクトがスキップされる理由はわかりません。さらに、この行で:
intent.putParcelableArrayListExtra("listeParcoursADL",recupParcours.getListeParcours());
次のインテントが表示されるまでに 5 秒ほどかかり、それがなければ瞬時に表示されます
パルクールコード
package com.dev.entity;
import java.util.ArrayList;
import android.os.Parcel;
import android.os.Parcelable;
public class Parcours implements Parcelable{
String parcours_lang_info_name;
String parcours_lang_info_desc;
int parcours_id;
String parcours_image;
int parcours_map;
int parcours_realite_augmentee;
int parcours_qrcode;
int parcours_visite_manuelle;
ArrayList<POI> listesPOI;
public Parcours() {
super();
listesPOI= new ArrayList<POI>();
}
public Parcours(String parcours_lang_info_name, String parcours_lang_info_desc,
int parcours_id, String parcours_image, int parcours_map,
ArrayList<POI> listesPOI, int parcours_realite_augmentee,
int parcours_qrcode, int parcours_visite_manuelle) {
super();
this.parcours_lang_info_name = parcours_lang_info_name;
this.parcours_lang_info_desc = parcours_lang_info_desc;
this.parcours_id = parcours_id;
this.parcours_image = parcours_image;
this.parcours_map = parcours_map;
this.listesPOI = listesPOI;
this.parcours_realite_augmentee = parcours_realite_augmentee;
this.parcours_qrcode = parcours_qrcode;
this.parcours_visite_manuelle = parcours_visite_manuelle;
}
public Parcours (Parcel in) {
this();
this.parcours_lang_info_name = in.readString();
this.parcours_lang_info_desc = in.readString();
this.parcours_id = in.readInt();
this.parcours_image = in.readString();
this.parcours_map = in.readInt();
in.readTypedList(listesPOI,POI.CREATOR);
this.parcours_realite_augmentee = in.readInt();
this.parcours_qrcode = in.readInt();
this.parcours_visite_manuelle = in.readInt();
}
@Override
public String toString() {
/*return "parcours_lang_info_name: "+parcours_lang_info_name+" " + "parcours_lang_info_desc: "+parcours_lang_info_desc+" "
+"parcours_id: " + parcours_id+" " +"parcours_image: "+parcours_image+" "+"parcours_map: "+parcours_map+" "+"parcours_realite_augmentee: "+ parcours_realite_augmentee+" "
+ "parcours_qrcode: "+ parcours_qrcode+" "+"parcours_visite_manuelle: "+parcours_visite_manuelle+" "+"listesPOI: "+listesPOI+" ";*/
return super.toString();
}
public String getParcours_lang_info_name() {
return parcours_lang_info_name;
}
public void setParcours_lang_info_name(String parcours_lang_info_name) {
this.parcours_lang_info_name = parcours_lang_info_name;
}
public String getParcours_lang_info_desc() {
return parcours_lang_info_desc;
}
public void setParcours_lang_info_desc(String parcours_lang_info_desc) {
this.parcours_lang_info_desc = parcours_lang_info_desc;
}
public int getParcours_id() {
return parcours_id;
}
public void setParcours_id(int parcours_id) {
this.parcours_id = parcours_id;
}
public String getParcours_image() {
return parcours_image;
}
public void setParcours_image(String parcours_image) {
this.parcours_image = parcours_image;
}
public int getParcours_map() {
return parcours_map;
}
public void setParcours_map(int parcours_map) {
this.parcours_map = parcours_map;
}
public int getParcours_realite_augmentee() {
return parcours_realite_augmentee;
}
public void setParcours_realite_augmentee(int parcours_realite_augmentee) {
this.parcours_realite_augmentee = parcours_realite_augmentee;
}
public int getParcours_qrcode() {
return parcours_qrcode;
}
public void setParcours_qrcode(int parcours_qrcode) {
this.parcours_qrcode = parcours_qrcode;
}
public int getParcours_visite_manuelle() {
return parcours_visite_manuelle;
}
public void setParcours_visite_manuelle(int parcours_visite_manuelle) {
this.parcours_visite_manuelle = parcours_visite_manuelle;
}
public ArrayList<POI> getPOI() {
return listesPOI;
}
public void setPOI(ArrayList<POI> listesPOI) {
this.listesPOI = listesPOI;
}
public static final Parcelable.Creator<Parcours> CREATOR = new Parcelable.Creator<Parcours>()
{
@Override
public Parcours createFromParcel(Parcel source)
{
return new Parcours(source);
}
@Override
public Parcours[] newArray(int size)
{
return new Parcours[size];
}
};
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(parcours_lang_info_name);
dest.writeString(parcours_lang_info_desc);
dest.writeInt(parcours_id);
dest.writeString(parcours_image);
dest.writeInt(parcours_map);
dest.writeInt(parcours_realite_augmentee);
dest.writeInt(parcours_qrcode);
dest.writeInt(parcours_visite_manuelle);
dest.writeTypedList(listesPOI);
}
}
どうもありがとうございました