如何使用捆绑
我需要开放的数组传递到另一个活动, 传递字符串数组我用简单的如何使用捆绑
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