2012-10-17 9 views

cevap

4

Belki de o arabirimini uygulayan bir ParcelableUri sınıfını uygulayabilir

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

bir niyet

şeyler nasıl geçirileceği görmek için. Bu (test edilmemiş !!) gibi

:

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]; 
    } 
}; 
+0

Bana bir örnek verebilir misiniz? – AndreaF

+0

Google "parcelable android uygulamak". Önce kendin için denemelisin ve geri gelemezsen geri dön. – Phix

+0

Uri dizisi başka bir nesnede yuvalanmıştır. Bunu tam olarak nasıl yapabilirim bilmiyorum. – AndreaF

3

Uri parcelable değil midir? Bir parcelable element dizisi (Uri) yaratmaya ve Bundle'a koymaya çalışabilirsiniz.

6

Düz dizilerden bildiğim kadarıyla Bundles'e konamaz. Ama Uri-ler'i ArrayList'e yerleştirebilir ve Bundle.putParcelableArrayList() öğesini çağırabilirsiniz.

örnek:

ArrayList<Uri> uris = new ArrayList<Uri>(); 
// fill uris 
bundle.putParcelableArrayList(KEY_URIS, uris); 

sonradan:

ArrayList<Parcelable> uris = 
      bundle.getParcelableArrayList(KEY_URIS); 
    for (Parcelable p : uris) { 
     Uri uri = (Uri) p; 
    } 
+0

Cevap için teşekkürler. Göndermiş olduğunuz ikinci kod bloğunu nereye koymalıyım? – AndreaF

+0

bu ikinci blok demetlerden okumak içindir, yani yani. ikinci etkinliğinizde onCreate() – marcinj

+0

Kullanmamıza rağmen çok teşekkür ederim: ArrayList uris = getIntent(). getParcelableArrayListExtra ("uriArray"); Benim kodum bundan farklıdır. – user1105748

0

herhangi bir nesneyi kaydırmak ve Quickle bunu stringify için JSONObject nesnesi kullanabilirsiniz. Dizeden JSON'a geri dönmek gerçekten önemsizdir

İlgili konular