2013-05-14 3 views
0

Я родовая tyeps из Arraylist.I использовала Parcelable но всегда бросать ошибку я использовал следующий кодОтправить общие данные типа ArrayList от одного к другому деятельности

Содержание

public class Content implements Parcelable { 
    private String pc, cc, sc, uId, name, title, image, image2, url2g, url3g, 
      urlHd, rating, views, smallDesc, longDesc, dvrId, id; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getUID() { 
     return uId; 
    } 

    public String getPC() { 
     return pc; 
    } 

    public String getDVRID() { 
     return dvrId; 
    } 

    public void setDVRID(String dVRID) { 
     dvrId = dVRID; 
    } 

    public String getIMAGE2() { 
     return image2; 
    } 

    public void setIMAGE2(String iMAGE2) { 
     image2 = iMAGE2; 
    } 

    public void setPC(String pC) { 
     pc = pC; 
    } 

    public String getCC() { 
     return cc; 
    } 

    public void setCC(String cC) { 
     cc = cC; 
    } 

    public String getSC() { 
     return sc; 
    } 

    public void setSC(String sC) { 
     sc = sC; 
    } 

    public void setUID(String uID) { 
     uId = uID; 
    } 

    public String getNAME() { 
     return name; 
    } 

    public void setNAME(String nAME) { 
     name = nAME; 
    } 

    public String getTITLE() { 
     return title; 
    } 

    public void setTITLE(String tITLE) { 
     title = tITLE; 
    } 

    public String getIMAGE() { 
     return image; 
    } 

    public void setIMAGE(String iMAGE) { 
     image = iMAGE; 
    } 

    public String getURL2G() { 
     return url2g; 
    } 

    public void setURL2G(String uRL2G) { 
     url2g = uRL2G; 
    } 

    public String getURL3G() { 
     return url3g; 
    } 

    public void setURL3G(String uRL3G) { 
     url3g = uRL3G; 
    } 

    public String getURLHD() { 
     return urlHd; 
    } 

    public void setURLHD(String uRLHD) { 
     urlHd = uRLHD; 
    } 

    public String getRATING() { 
     return rating; 
    } 

    public void setRATING(String rATING) { 
     rating = rATING; 
    } 

    public String getVIEWS() { 
     return views; 
    } 

    public void setVIEWS(String vIEWS) { 
     views = vIEWS; 
    } 

    public String getSMALLDESC() { 
     return smallDesc; 
    } 

    public void setSMALLDESC(String sMALLDESC) { 
     smallDesc = sMALLDESC; 
    } 

    public String getLONGDESC() { 
     return longDesc; 
    } 

    public void setLONGDESC(String lONGDESC) { 
     longDesc = lONGDESC; 
    } 

    @Override 
    public int describeContents() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel out, int arg1) { 
     // TODO Auto-generated method stub 
     out.writeString(pc); 
     out.writeString(sc); 
     out.writeString(cc); 
    } 

    public static final Parcelable.Creator<Content> CREATOR = new Parcelable.Creator<Content>() { 
     public Content createFromParcel(Parcel in) { 
      return new Content(); 
     } 

     public Content[] newArray(int size) { 
      return new Content[size]; 
     } 
    }; 
} 

и вызывающие пропуски, используя следующий код

Intent details = new Intent(context, B.class); 
     details.putExtra("category", LIVE); 
     details.putParcelableArrayListExtra("arrayList", 
       showcase); 
     startActivity(details); 

получение значения

category = getIntent().getExtras().getInt("category"); 
     content = getIntent().getParcelableArrayListExtra("arrayList"); 

LogCat

FATAL EXCEPTION: main 
E/AndroidRuntime(4666): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zengamedia.zengatv/com.zengamedia.zengatv.Details}: java.lang.RuntimeException: Parcel [email protected]: Unmarshalling unknown type code 3014771 at offset 112 
E/AndroidRuntime(4666): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
E/AndroidRuntime(4666): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
E/AndroidRuntime(4666): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
E/AndroidRuntime(4666): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
E/AndroidRuntime(4666): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(4666): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(4666): at android.app.ActivityThread.main(ActivityThread.java:4424) 
E/AndroidRuntime(4666): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(4666): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(4666): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(4666): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(4666): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(4666): Caused by: java.lang.RuntimeException: Parcel [email protected]: Unmarshalling unknown type code 3014771 at offset 112 
E/AndroidRuntime(4666): at android.os.Parcel.readValue(Parcel.java:1921) 
E/AndroidRuntime(4666): at android.os.Parcel.readMapInternal(Parcel.java:2094) 
E/AndroidRuntime(4666): at android.os.Parcel.readHashMap(Parcel.java:1439) 
E/AndroidRuntime(4666): at android.os.Parcel.readValue(Parcel.java:1851) 
E/AndroidRuntime(4666): at android.os.Parcel.readListInternal(Parcel.java:2103) 
E/AndroidRuntime(4666): at android.os.Parcel.readArrayList(Parcel.java:1544) 
E/AndroidRuntime(4666): at android.os.Parcel.readValue(Parcel.java:1875) 
E/AndroidRuntime(4666): at android.os.Parcel.readMapInternal(Parcel.java:2094) 
E/AndroidRuntime(4666): at android.os.Bundle.unparcel(Bundle.java:223) 
E/AndroidRuntime(4666): at android.os.Bundle.getParcelableArrayList(Bundle.java:1202) 
E/AndroidRuntime(4666): at android.content.Intent.getParcelableArrayListExtra(Intent.java:4005) 
E/AndroidRuntime(4666): at com.zengamedia.zengatv.Details.onCreate(Details.java:50) 
E/AndroidRuntime(4666): at android.app.Activity.performCreate(Activity.java:4492) 
E/AndroidRuntime(4666): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
E/AndroidRuntime(4666): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
E/AndroidRuntime(4666): ... 11 more 

Пожалуйста, предложите мне, где я делаю неправильно

+1

http://androidhub.wordpress.com/2011/08/08/android-intents-for-passing-data-between-activities-part-3 – Raghunandan

+0

Примечание: в методе 'createFromParcel (Parcel in)' вы должны фактически инициализируйте вновь созданный «Content» со значениями, записанными на партию в 'writeToParcel (Parcel out, int arg1)' – Vladimir

+0

stacktrace 'android.os.Parcel.readValue (Parcel.java:1921)' говорит, что вы ничего не реализовали для чтения данных из посылки –

ответ

2

Ваш Parcelable реализация просто не правильно.

Взгляните на этот замечательный инструмент: parcelabler

Это поможет вам ввести все, что раздражает код для него, до тех пор, пока вы не имеете любые более сложные типы в своем классе. Просто скопируйте в него весь свой класс.

Кажется, этот инструмент немного пробки с интервалом и создания нескольких строк. Это должно работать;

public class Content implements Parcelable { 

private String pc, cc, sc, uId, name, title, image, image2, url2g, url3g, 
     urlHd, rating, views, smallDesc, longDesc, dvrId, id; 

public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public String getUID() { 
    return uId; 
} 

public String getPC() { 
    return pc; 
} 

public String getDVRID() { 
    return dvrId; 
} 

public void setDVRID(String dVRID) { 
    dvrId = dVRID; 
} 

public String getIMAGE2() { 
    return image2; 
} 

public void setIMAGE2(String iMAGE2) { 
    image2 = iMAGE2; 
} 

public void setPC(String pC) { 
    pc = pC; 
} 

public String getCC() { 
    return cc; 
} 

public void setCC(String cC) { 
    cc = cC; 
} 

public String getSC() { 
    return sc; 
} 

public void setSC(String sC) { 
    sc = sC; 
} 

public void setUID(String uID) { 
    uId = uID; 
} 

public String getNAME() { 
    return name; 
} 

public void setNAME(String nAME) { 
    name = nAME; 
} 

public String getTITLE() { 
    return title; 
} 

public void setTITLE(String tITLE) { 
    title = tITLE; 
} 

public String getIMAGE() { 
    return image; 
} 

public void setIMAGE(String iMAGE) { 
    image = iMAGE; 
} 

public String getURL2G() { 
    return url2g; 
} 

public void setURL2G(String uRL2G) { 
    url2g = uRL2G; 
} 

public String getURL3G() { 
    return url3g; 
} 

public void setURL3G(String uRL3G) { 
    url3g = uRL3G; 
} 

public String getURLHD() { 
    return urlHd; 
} 

public void setURLHD(String uRLHD) { 
    urlHd = uRLHD; 
} 

public String getRATING() { 
    return rating; 
} 

public void setRATING(String rATING) { 
    rating = rATING; 
} 

public String getVIEWS() { 
    return views; 
} 

public void setVIEWS(String vIEWS) { 
    views = vIEWS; 
} 

public String getSMALLDESC() { 
    return smallDesc; 
} 

public void setSMALLDESC(String sMALLDESC) { 
    smallDesc = sMALLDESC; 
} 

public String getLONGDESC() { 
    return longDesc; 
} 

public void setLONGDESC(String lONGDESC) { 
    longDesc = lONGDESC; 
} 

@Override 
public int describeContents() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

public static final Parcelable.Creator<Content> CREATOR = new Parcelable.Creator<Content>() { 
    public Content createFromParcel(Parcel in) { 
     return new Content(); 
    } 

    public Content[] newArray(int size) { 
     return new Content[size]; 
    } 
}; 

protected Content(Parcel in) { 
    pc = in.readString(); 
    cc = in.readString(); 
    sc = in.readString(); 
    uId = in.readString(); 
    name = in.readString(); 
    title = in.readString(); 
    image = in.readString(); 
    image2 = in.readString(); 
    url2g = in.readString(); 
    url3g = in.readString(); 
    urlHd = in.readString(); 
    rating = in.readString(); 
    views = in.readString(); 
    smallDesc = in.readString(); 
    longDesc = in.readString(); 
    dvrId = in.readString(); 
    id = in.readString(); 
} 

public int describeContents() { 
    return 0; 
} 

public void writeToParcel(Parcel dest, int flags) { 
    dest.writeString(pc); 
    dest.writeString(cc); 
    dest.writeString(sc); 
    dest.writeString(uId); 
    dest.writeString(name); 
    dest.writeString(title); 
    dest.writeString(image); 
    dest.writeString(image2); 
    dest.writeString(url2g); 
    dest.writeString(url3g); 
    dest.writeString(urlHd); 
    dest.writeString(rating); 
    dest.writeString(views); 
    dest.writeString(smallDesc); 
    dest.writeString(longDesc); 
    dest.writeString(dvrId); 
    dest.writeString(id); 
} 

public static final Parcelable.Creator<Content> CREATOR = new Parcelable.Creator<Content>() { 
    public Content createFromParcel(Parcel in) { 
     return new Content(in); 
    } 

    public Content[] newArray(int size) { 
     return new Content[size]; 
    } 
}; 

}

+0

спасибо я пропустил общедоступное содержание (Parcel в) { \t \t // TODO Auto-порожденного конструктор заглушки \t \t this.pc = в .readString(); \t \t this.sc = in.readString(); \t \t this.cc = in.readString(); \t} спасибо, что он работает сейчас – Dilip

1
Define your List static and access any where in your application. 
+2

не хочешь использовать как этот BCZ у меня есть более чем один ArrayList – Dilip

0

Взгляните на следующий примере, в котором я покрыл String,Integer,double

типов данных
import android.os.Parcel; 
import android.os.Parcelable; 

public class Poi implements Parcelable{ 
    private Integer poiId; 
    private String poiLabel; 
    private String poiInfo; 
    private String poiImageName; 
    private String poiHistoricalImageName; 
    private String inPaths; 
    private String poiType; 
    private double longitude; 
    private double latitude; 


public Poi() { 
} 

public Poi(Integer poiId, String poiLabel, String poiInfo, 
     String poiImageName,String poiHistoricalImageName, String inPaths, String poiType, 
     double longitude, double latitude) { 
    super(); 
    this.poiId = poiId; 
    this.poiLabel = poiLabel; 
    this.poiInfo = poiInfo; 
    this.poiImageName = poiImageName; 
    this.poiHistoricalImageName = poiHistoricalImageName; 
    this.inPaths = inPaths; 
    this.poiType = poiType; 
    this.longitude = longitude; 
    this.latitude = latitude; 
} 

public Integer getPoiId() { 
    return poiId; 
} 

public void setPoiId(Integer poiId) { 
    this.poiId = poiId; 
} 

public String getPoiLabel() { 
    return poiLabel; 
} 

public void setPoiLabel(String poiLabel) { 
    this.poiLabel = poiLabel; 
} 

public String getPoiInfo() { 
    return poiInfo; 
} 

public void setPoiInfo(String poiInfo) { 
    this.poiInfo = poiInfo; 
} 

public String getPoiImageName() { 
    return poiImageName; 
} 

public void setPoiImageName(String poiImageName) { 
    this.poiImageName = poiImageName; 
} 

public String getPoiHistoricalImageName() { 
    return poiHistoricalImageName; 
} 

public void setPoiHistoricalImageName(String poiHistoricalImageName) { 
    this.poiHistoricalImageName = poiHistoricalImageName; 
} 

public String getInPaths() { 
    return inPaths; 
} 

public void setInPaths(String inPaths) { 
    this.inPaths = inPaths; 
} 

public String getPoiType() { 
    return poiType; 
} 

public void setPoiType(String poiType) { 
    this.poiType = poiType; 
} 

public double getLongitude() { 
    return longitude; 
} 

public void setLongitude(double longitude) { 
    this.longitude = longitude; 
} 

public double getLatitude() { 
    return latitude; 
} 

public void setLatitude(double latitude) { 
    this.latitude = latitude; 
} 


@Override 
public String toString() { 
    return "Poi [poiId=" + poiId + ", poiLabel=" + poiLabel + ", poiInfo=" 
      + poiInfo + ", poiImageName=" + poiImageName 
      + ", poiHistoricalImageName=" + poiHistoricalImageName 
      + ", inPaths=" + inPaths + ", poiType=" + poiType 
      + ", longitude=" + longitude + ", latitude=" + latitude + "]"; 
} 


//parcelable stuff 

public Poi (Parcel in) { 
    readFromParcel(in); 
} 

private void readFromParcel(Parcel in) { 

    poiId = in.readInt(); 
    poiLabel = in.readString(); 
    poiInfo = in.readString(); 
    poiImageName = in.readString(); 
    poiHistoricalImageName = in.readString(); 
    inPaths = in.readString(); 
    poiType = in.readString(); 
    longitude = in.readDouble(); 
    latitude = in.readDouble(); 

} 

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 
    public Poi createFromParcel(Parcel in) 
    { 
     return new Poi(in); 
    } 

    @Override 
    public Poi[] newArray(int size) { 
     return new Poi[size]; 
    } 
}; 


@Override 
public int describeContents() { 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 

    dest.writeInt(poiId); 
    dest.writeString(poiLabel); 
    dest.writeString(poiInfo); 
    dest.writeString(poiImageName); 
    dest.writeString(poiHistoricalImageName); 
    dest.writeString(inPaths); 
    dest.writeString(poiType); 
    dest.writeDouble(longitude); 
    dest.writeDouble(latitude); 
} 

} 

Я надеюсь, что это будет полезно !!

Смежные вопросы