ClassNotFoundException при разборке и действительно не знаю, почему

ФИКСИРОВАННЫЙ: ОТВЕТ НА НОМЕРЕ

Я пишу приложение Android для проекта, и я пытаюсь использовать доступные объекты. У меня есть 2 паллабируемых класса. Первый – это нормальный класс с двумя аргументами. Второй – это класс с дополнительными атрибутами и список с типом первого класса и дополнительный объект.

Каждый раз, когда я пытаюсь передать объект второго класса другому Activity, я получаю android.os.BadParcelableException: ClassNotFoundException при unmarshalling

И приложение закрывается.

Я искал несколько часов и попробовал несколько решений, но ничего не помогло. Ошибка не возникает, когда я передаю объект первого класса другому действию.

Здесь мой код:

package de.softwareproject.v3.testclasses; import android.os.Parcel; import android.os.Parcelable; public class Cart implements Parcelable { private String name; private Integer priceInCents; public Cart() {} public Cart(Parcel in){ readFromParcel(in); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getPriceInCents() { return priceInCents; } public void setPriceInCents(Integer priceInCents) { this.priceInCents = priceInCents; } public static final Parcelable.Creator<Cart> CREATOR = new Parcelable.Creator<Cart>() { @Override public Cart createFromParcel(Parcel source) { return new Cart(source); } @Override public Cart[] newArray(int size) { return new Cart[size]; } }; @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(priceInCents); } private void readFromParcel(Parcel in) { name = in.readString(); priceInCents = in.readInt(); } } 

Мой второй класс:

 package de.softwareproject.v3.testclasses; import java.util.ArrayList; import java.util.List; import android.os.Parcel; import android.os.Parcelable; public class CurrentUser implements Parcelable { private String username; private String eMail; private String password; private List<Cart> carts; private Cart activeCart; public CurrentUser() {} public CurrentUser(Parcel in) { readFromParcel(in); } private void readFromParcel(Parcel in) { username = in.readString(); eMail = in.readString(); password = in.readString(); activeCart = in.readParcelable(de.softwareproject.v3.testclasses.Cart.class.getClassLoader()); if (carts == null){ carts = new ArrayList<Cart>(); } in.readTypedList(carts, Cart.CREATOR); } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String geteMail() { return eMail; } public void seteMail(String eMail) { this.eMail = eMail; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public List<Cart> getCarts() { return carts; } public void setCarts(List<Cart> carts) { this.carts = carts; } public Cart getActiveCart() { return activeCart; } public void setActiveCart(Cart activeCart) { this.activeCart = activeCart; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(username); dest.writeString(eMail); dest.writeString(password); dest.writeTypedList(carts); dest.writeParcelable(activeCart, flags); } public static final Parcelable.Creator<CurrentUser> CREATOR = new Parcelable.Creator<CurrentUser>() { @Override public CurrentUser createFromParcel(Parcel in) { return new CurrentUser(in); } @Override public CurrentUser[] newArray(int size) { return new CurrentUser[size]; } }; } 

Пожалуйста, помогите мне.

Изменить: Здесь мой Logcat

  03-15 16:24:08.139: E/Parcel(689): Class not found when unmarshalling: ??, e: java.lang.ClassNotFoundException: ?? 03-15 16:24:08.149: D/AndroidRuntime(689): Shutting down VM 03-15 16:24:08.149: W/dalvikvm(689): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 03-15 16:24:08.229: E/AndroidRuntime(689): FATAL EXCEPTION: main 03-15 16:24:08.229: E/AndroidRuntime(689): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.softwareproject.v3/de.softwareproject.v3.Startpage}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: ?? 03-15 16:24:08.229: E/AndroidRuntime(689): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.app.ActivityThread.access$600(ActivityThread.java:122) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.os.Handler.dispatchMessage(Handler.java:99) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.os.Looper.loop(Looper.java:137) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.app.ActivityThread.main(ActivityThread.java:4340) 03-15 16:24:08.229: E/AndroidRuntime(689): at java.lang.reflect.Method.invokeNative(Native Method) 03-15 16:24:08.229: E/AndroidRuntime(689): at java.lang.reflect.Method.invoke(Method.java:511) 03-15 16:24:08.229: E/AndroidRuntime(689): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 03-15 16:24:08.229: E/AndroidRuntime(689): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 03-15 16:24:08.229: E/AndroidRuntime(689): at dalvik.system.NativeStart.main(Native Method) 03-15 16:24:08.229: E/AndroidRuntime(689): Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: ?? 03-15 16:24:08.229: E/AndroidRuntime(689): at android.os.Parcel.readParcelable(Parcel.java:1966) 03-15 16:24:08.229: E/AndroidRuntime(689): at de.softwareproject.v3.testclasses.CurrentUser.readFromParcel(CurrentUser.java:26) 03-15 16:24:08.229: E/AndroidRuntime(689): at de.softwareproject.v3.testclasses.CurrentUser.<init>(CurrentUser.java:19) 03-15 16:24:08.229: E/AndroidRuntime(689): at de.softwareproject.v3.testclasses.CurrentUser$1.createFromParcel(CurrentUser.java:80) 03-15 16:24:08.229: E/AndroidRuntime(689): at de.softwareproject.v3.testclasses.CurrentUser$1.createFromParcel(CurrentUser.java:1) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.os.Parcel.readParcelable(Parcel.java:1992) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.os.Parcel.readValue(Parcel.java:1854) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.os.Parcel.readMapInternal(Parcel.java:2094) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.os.Bundle.unparcel(Bundle.java:223) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.os.Bundle.getParcelable(Bundle.java:1158) 03-15 16:24:08.229: E/AndroidRuntime(689): at de.softwareproject.v3.Startpage.onCreate(Startpage.java:34) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.app.Activity.performCreate(Activity.java:4465) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 03-15 16:24:08.229: E/AndroidRuntime(689): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 03-15 16:24:08.229: E/AndroidRuntime(689): ... 11 more 03-15 16:24:10.289: I/Process(689): Sending signal. PID: 689 SIG: 9 

FIX Я, наконец, нашел ошибку, и я просто не могу волноваться об этом!

Искал почти 1 1/2 дня, и все, что ему нужно, это переключение двух последних методов в readFromParcel или writeToParcel, потому что они не были в том же порядке !!

Не могу поверить, но теперь это работает. Для каждого, кто получает ту же ошибку, проверьте порядок writeToParcel и readFromParcel. Тей должен быть в том же порядке.

Хороший день, христианский **

Solutions Collecting From Web of "ClassNotFoundException при разборке и действительно не знаю, почему"

FIX Я, наконец, нашел ошибку, и я просто не могу волноваться об этом!

Искал почти 1 1/2 дня, и все, что ему нужно, это переключение двух последних методов в readFromParcel или writeToParcel, потому что они не были в том же порядке !!

Не могу поверить, но теперь это работает. Для каждого, кто получает ту же ошибку, проверьте порядок writeToParcel и readFromParcel. Тей должен быть в том же порядке.

(Кристиан Риш решил это сам по себе. Тем не менее, я верю в аккуратность на этом сайте. Может он сам закроет ответ)

@Override public void writeToParcel (Parcel dest, int flags) {// может альтернативно связываться сначала …

  dest.writeString(songs_id); dest.writeInt(check_song_favorite); dest.writeString(name); dest.writeString(track_image); dest.writeString(created_date); dest.writeString(status); dest.writeString(track); dest.writeString(artist_name); dest.writeString(uploader_name); dest.writeString(play_count); dest.writeString(share_count); dest.writeString(favorite_count); dest.writeString(genre); dest.writeString(user_id); dest.writeString(offline_download); dest.writeString(slug); } /** * Creates ArtistParcelable model from Parcel. */ public static final Parcelable.Creator<PlayerData> CREATOR = new Creator<PlayerData>() { @Override public PlayerData createFromParcel(Parcel source) { String songs_id = source.readString(); int check_song_favorite = source.readInt(); String name = source.readString(); String track_image = source.readString(); String created_date = source.readString(); String status = source.readString(); String track = source.readString(); String artist_name = source.readString(); String uploader_name = source.readString(); String play_count = source.readString(); String share_count = source.readString(); String favorite_count = source.readString(); String genre = source.readString(); String user_id = source.readString(); String offline_download = source.readString(); String slug = source.readString(); return new PlayerData(check_song_favorite,songs_id, name, created_date, track_image, status, track, artist_name, uploader_name, play_count, share_count, favorite_count,genre,user_id,offline_download,slug); } @Override public PlayerData[] newArray(int size) { return new PlayerData[size]; } }; 

Старайтесь управлять writeToParcel и readFromParcel таким же образом. Решила мою проблему.