Bazı bağlamlarda çalışabilen bir Activity
adresine veri göndermem gerekiyor. Bunun için, ArrayList
veri türüne sahip A sınıfını, örnek üyelerinden biri olarak B deyin. B sınıfını A sınıfı sınıf olarak ilan ettim. A sınıfı bu örneği Intent
aracılığıyla göndermek için A ve B sınıflarını Parcelable
olarak yaptım. İç içe Parcelling: RuntimeException - Bilinmeyen tip kodu 3211319 ofset 440
public class A implements Parcelable{
public class B implements Parcelable{
public ArrayList<String> value;
....
....
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(value);
}
....
....
}
public List<B> group;
public String name;
....
....
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(group);
dest.writeString(name);
}
....
....
}
Verileri koymak için
putExtra (String name, Parcelable value)
fonksiyon kullanılır:
sınıfı yapısı (bu sınıflar Parcelable
yapmak için yazılı tam kod, örneğin kod içermez), bu gibi bir şeydir. Bu iç sınıfın sorun olabilir düşünce olarak ben (sınıf A dışında, sınıf B taşındı Sonra
Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(1087): 1289817569622 java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.SET_VOIP_SUPP_SERVICE_REQUEST_LOCAL (has extras) } in [email protected]
E/AndroidRuntime(1087): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:765)
E/AndroidRuntime(1087): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(1087): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(1087): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(1087): at android.app.ActivityThread.main(ActivityThread.java:4363)
E/AndroidRuntime(1087): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1087): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(1087): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(1087): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(1087): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(1087): Caused by: java.lang.RuntimeException: Parcel [email protected]: Unmarshalling unknown type code 3211319 at offset 440
E/AndroidRuntime(1087): at android.os.Parcel.readValue(Parcel.java:1777)
E/AndroidRuntime(1087): at android.os.Parcel.readListInternal(Parcel.java:1956)
E/AndroidRuntime(1087): at android.os.Parcel.readList(Parcel.java:1302)
E/AndroidRuntime(1087): at com.hsc.example.android.MyApp.A.<init>(A.java:61)
E/AndroidRuntime(1087): at com.hsc.example.android.MyApp.A.<init>(A.java:57)
E/AndroidRuntime(1087): at com.hsc.example.android.MyApp.A$1.createFromParcel(A.java:67)
E/AndroidRuntime(1087): at com.hsc.example.android.MyApp.A$1.createFromParcel(A.java:1)
E/AndroidRuntime(1087): at android.os.Parcel.readParcelable(Parcel.java:1845)
E/AndroidRuntime(1087): at android.os.Parcel.readValue(Parcel.java:1713)
E/AndroidRuntime(1087): at android.os.Parcel.readMapInternal(Parcel.java:1947)
E/AndroidRuntime(1087): at android.os.Bundle.unparcel(Bundle.java:169)
E/AndroidRuntime(1087): at android.os.Bundle.getParcelable(Bundle.java:1037)
E/AndroidRuntime(1087): at android.content.Intent.getParcelableExtra(Intent.java:3269)
E/AndroidRuntime(1087): at com.hsc.example.android.MyApp.MyAppActuvity$1.onReceive(MyAppActuvity.java:219)
E/AndroidRuntime(1087): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:754)
E/AndroidRuntime(1087): ... 9 more
ve CREATOR ilan:
Ama alıcı tarafında
, aşağıdaki özel durum var Statik: Bu statik beyan, B sınıfı A Sınıfı bir iç sınıf olduğunda mevcut değildi. Ama yardım etmedi.Bu sorunun yuvalanmış Parceling nedeniyle olduğu görülmektedir.
Herhangi bir öneri ??
NOT: Ben Paketi sınıfının fonksiyonunu kullanılan ve sonra android.os.Bundle.getParcelable(String key)
kullanarak unmarshalled zaman sonra her şey gayet iyi. Öyleyse sorun sadece Intents ile ilgili.
ArrayList okumak için? Benzer bir senaryo ile uğraşmak zorundayım. – Ita