Android de 2 adet Activityim var. A ve B olsun adları. A dan B ye ArrayList<yemeklistesi> liste = new ArrayList<yemeklistesi>(); Şeklinde bir listeyi gondermem lazım. Yemek sınıfı :

public class YemekListesi implements Parcelable  {
private String corba;
private String anaYemek;
private String meze;
private int kalori;
private String gun;

public YemekListesi(String corba, String ana, String meze, int kalori,
        String gun) {
    this.corba = corba;
    this.anaYemek = ana;
    this.meze = meze;
    this.kalori = kalori;
    this.gun = gun;
}

public String getCorba() {
    return corba;
}

public void setCorba(String corba) {
    this.corba = corba;
}

public String getAnaYemek() {
    return anaYemek;
}

public void setAnaYemek(String anaYemek) {
    this.anaYemek = anaYemek;
}

public String getMeze() {
    return meze;
}

public void setMeze(String meze) {
    this.meze = meze;
}

public int getKalori() {
    return kalori;
}

public void setKalori(int kalori) {
    this.kalori = kalori;
}

public String getGun() {
    return gun;
}

public void setGun(String gun) {
    this.gun = gun;
}

public YemekListesi(Parcel in){
    corba = in.readString();
    anaYemek = in.readString();
    meze = in.readString();
    kalori = in.readInt();
    gun = in.readString();
}

@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {

    dest.writeString(corba);
    dest.writeString(anaYemek);
    dest.writeString(meze);
    dest.writeString(gun);
    dest.writeInt(kalori);
}

public static final Parcelable.Creator<YemekListesi> CREATOR = new Parcelable.Creator<YemekListesi>()
        {
            public YemekListesi createFromParcel(Parcel in)
            {
                return new YemekListesi(in);
            }
            public YemekListesi[] newArray(int size)
            {
                return new YemekListesi[size];
            }
        };

}

A daki kodum (listeye ekleme işlemleri doğru bir şekilde gerçekleşiyor):

Intent intent = new Intent(getApplicationContext(), B.class);
            intent.putParcelableArrayListExtra("veriler",liste);
            startActivity(intent);

B den verileri şu şekilde alıyorum :

ArrayList<YemekListesi> gelenListe = getIntent().getParcelableArrayListExtra("veriler");

Yukarıdaki kodlar dahilinde debug ile hatayı gözlemlediğimde eğer arraylist in Size() ı 1 ise sorun olmuyor. Fakat boyutu(Size) 2 ise işte o zaman B de veriyi alırken kod patlıyor. Lütfen yardım!!!

soruldu: 04 Nis '13, 14:56

emax_64's gravatar image

emax_64
64590102101
cevap kabul oranı: 20%


Parcelable arayüzünü hiç kullanmadım ama ben bu durumda serializable arayüzünü kullanıyorum çünkü, biraz da tembellikten, uygulamak için Parcelable'daki gibi üye değişken bazında ezmem gereken metotlar olmuyor.

kullanım:

A icinde:

startActivity( new Intent(A.this, B.class).putExtra("liste", (Serializable)yemekListe) )

B icinde:

ArrayList<yemeklistesi> yemekListe = (ArrayList<yemeklistesi>) getIntent().getSerializableExtra("liste");

permanent link

cevaplandı: 05 Nis '13, 04:09

gturedi's gravatar image

gturedi
2.8k41538
cevap kabul oranı: 26%

değiştirildi: 05 Nis '13, 04:53

sizin söylediğiniz şekilde denedim ama casting yapamazsınız diyor. gonderirken : intent.putExtra("veriler",(Serializable)liste); Alırken : ArrayList<yemeklistesi> gelenListe = (ArrayList<yemeklistesi>)getIntent().getSerializableExtra("veriler");

(05 Nis '13, 09:56) emax_64 emax_64's gravatar image

perki bunu yapmayı denerken "yemeklistesi" sınıfında Serializable arayüzünü uyguladınız mı?

(05 Nis '13, 13:50) gturedi gturedi's gravatar image

aradığım cevap buydu çok tşkler. Sorun çözüldü.

(05 Nis '13, 15:40) emax_64 emax_64's gravatar image

ben teşekkür ederim, kolay gelsin

(05 Nis '13, 17:27) gturedi gturedi's gravatar image

Sorunun neden kaynaklandığını tam olarak bilmiyorum ama, ben bu tür durumlarda sabit bir dosyada değişken tutup onlar aracılığıyla aktarıyordum. Mesela sabit.java

oraya

public static ArrayList<YemekListesi> yemekListe;

A activitysinde `sabit.yemekListe = ....//Yemek listeni değişkene aktar`

B activitysinde de

if(sabit.yemekListe==null) return;
ArrayList<YemekListesi> gelenListe = sabit.yemekListe;//Diziyi alıyoruz
sabit.yemekListe = null;//Sonra boşaltıyoruz
permanent link

cevaplandı: 05 Nis '13, 01:01

creseos's gravatar image

creseos
2.0k468187
cevap kabul oranı: 37%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×818

Soruldu: 04 Nis '13, 14:56

Görüntüleme: 704 kez

Son güncelleme: 05 Nis '13, 17:27

powered by BitNami OSQA