0

I need to send a ArrayList<String> to another Activity, so I create this Activity which implements Parcelable.

public class ParceDataImages implements Parcelable {

private ArrayList<String> Images;

public ParceDataImages(ArrayList<String> images) {
    this.Images = images;
}
public ParceDataImages(Parcel parcel) {
    this.Images = new ArrayList<String>();
    parcel.readList(this.Images,String.class.getClassLoader());
}

public ArrayList<String> getImages() {
    return Images;
}
public void setImages(ArrayList<String> images) {
    Images = images;
}
@Override
public int describeContents() {
    return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeList(Images);
}
public static final Parcelable.Creator<ParceDataImages> CREATOR = new ClassLoaderCreator<ParceDataImages>() {
    @Override
    public ParceDataImages createFromParcel(Parcel source, ClassLoader loader) {
        return null;
    }
    @Override
    public ParceDataImages createFromParcel(Parcel source) {
        return new ParceDataImages(source);
    }
    @Override
    public ParceDataImages[] newArray(int size) {
        return new ParceDataImages[size];
    }
};

And inside of my Adapter:

public void onClick(View view) {
            ParceDataImages parceDataImages = new ParceDataImages(ImageArray);
            Intent intent = new Intent(activity,UserAdsView.class);
            intent.putExtra("data",parceDataImages);
            activity.startActivity(intent);

SecondActivity :

ParceDataImages parce = getIntent().getExtras().getParcelable("data");

And a I got this Exception : java.lang.RuntimeException: Failure from system

  • Have you seen the `Intent#putStringArrayListExtra()` method? – Mike M. Feb 03 '17 at 12:35
  • 1
    I think you should use intent.putParcelableArrayListExtra( parceDataImages ) instead of intent.putExtra – Tosin Onikute Feb 03 '17 at 12:37
  • I did, but it expect a List, and I did parceDataImages.getImages –  Feb 03 '17 at 12:42
  • There's no need to create a custom `Parcelable` for this. You can already pass an `ArrayList` on an `Intent`. Look at my comment above. – Mike M. Feb 03 '17 at 12:43
  • It's not working : E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 2027964) D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Failure from system –  Feb 03 '17 at 13:05
  • You're trying to send too much data through an `Intent`. There's a practical limit of one megabyte total on the size of extras. – Mike M. Feb 03 '17 at 13:09

0 Answers0