如何使用捆绑

我需要开放的数组传递到另一个活动, 传递字符串数组我用简单的如何使用捆绑

String[] images=getImagesPathString(); 

Bundle b = new Bundle();

b.putStringArray("images", images);

但使用乌里

阵列活动之间传递乌里数组

Uri[] imagesUri=getImagesUri(); 

这不工作,因为没有一种方法“putUri(URI X)”捆绑

我怎么能解决这个问题?

回答:

你应该看看Parcelable接口,以了解如何通过在意向

http://developer.android.com/intl/es/reference/android/os/Parcelable.html

东西也许你可以实现实现该接口ParcelableUri类。

这样的(未测试!!):

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];

}

};

回答:

是不开放的parcelable?您可以尝试创建一个parcelable元素(Uri)的数组并将其放入Bundle中。

回答:

从我所知道的普通数组不能放入Bundles中。但是你可以把Uri-s放到ArrayList中,然后调用Bundle.putParcelableArrayList()。

例如:

ArrayList<Uri> uris = new ArrayList<Uri>(); 

// fill uris

bundle.putParcelableArrayList(KEY_URIS, uris);

以后:

ArrayList<Parcelable> uris = 

bundle.getParcelableArrayList(KEY_URIS);

for (Parcelable p : uris) {

Uri uri = (Uri) p;

}

回答:

可以使用的JSONObject包裹任何对象,quickle字符串化它。从字符串返回JSON真的很平凡

以上是 如何使用捆绑 的全部内容, 来源链接: utcz.com/qa/260382.html

回到顶部