I need to pass an array of Uri to another activity, to pass an array of String I use simply
String[] images=getImagesPathString();
Bundle b = new Bundle();
b.putStringArray("images", images);
But using an array of Uri
Uri[] imagesUri=getImagesUri();
this doesn't works because there isn't a method "putUri(Uri x)" in Bundle
How could I solve this problem?
From what I know plain arrays cannot be put into Bundles. But you can put Uri-s into ArrayList and then call Bundle.putParcelableArrayList().
example:
ArrayList<Uri> uris = new ArrayList<Uri>();
// fill uris
bundle.putParcelableArrayList(KEY_URIS, uris);
later on:
ArrayList<Parcelable> uris =
bundle.getParcelableArrayList(KEY_URIS);
for (Parcelable p : uris) {
Uri uri = (Uri) p;
}
You should look into the Parcelable interface to see how to pass things on an intent
http://developer.android.com/intl/es/reference/android/os/Parcelable.html
Maybe you can implement a ParcelableUri class that implements that interface.
Like this (not tested!!):
public class ParcelableUri implements Parcelable {
private Uri[] uris;
public ParcelableUri(Parcel in) {
Uri.Builder builder = new Uri.Builder();
int lenght = in.readInt();
for(int i=0; i<=lenght; i++){
uris[i]= builder.path(in.readString()).build();
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(uris.length);
for(int i=0; i<=uris.length; i++){
dest.writeString(uris[i].toString());
}
}
public static final Parcelable.Creator<ParcelableUri> CREATOR = new Parcelable.Creator<ParcelableUri>() {
public ParcelableUri createFromParcel(Parcel in) {
return new ParcelableUri(in);
}
public ParcelableUri[] newArray(int size) {
return new ParcelableUri[size];
}
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With