0

我正在構建一個Android小部件,並試圖爲小部件中的每個列表項添加單擊功能。 它的工作原理除了我只是不知何故不能將意圖附加到目標。當我嘗試在那裏放置實現Parcalable接口的我的類Parallel時,它很容易失敗並出現以下錯誤。小部件本身有沒有可能無法訪問該類的可能性? (其設在我的應用程序的命名空間和公共)解組類時未發現錯誤

10-01 11:13:50.819 18503-18809/? E/Parcel﹕ Class not found when unmarshalling: cz.cvut.kosapp.model.entities.Parallel 
    java.lang.ClassNotFoundException: cz.cvut.kosapp.model.entities.Parallel 
    at java.lang.Class.classForName(Native Method) 
    at java.lang.Class.forName(Class.java:204) 
    at java.lang.Class.forName(Class.java:169) 
    at android.os.Parcel.readParcelableCreator(Parcel.java:2091) 
    at android.os.Parcel.readParcelable(Parcel.java:2055) 
    at android.os.Parcel.readValue(Parcel.java:1971) 
    at android.os.Parcel.readMapInternal(Parcel.java:2255) 
    at android.os.Bundle.unparcel(Bundle.java:223) 
    at android.os.Bundle.putAll(Bundle.java:302) 
    at android.content.Intent.fillIn(Intent.java:6352) 
    at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:210) 
    at com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:2603) 
    at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:232) 
    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1737) 
    at android.os.Binder.execTransact(Binder.java:388) 
    at dalvik.system.NativeStart.run(Native Method) 
    Caused by: java.lang.NoClassDefFoundError: cz/cvut/kosapp/model/entities/Parallel 
    ... 16 more 
    Caused by: java.lang.ClassNotFoundException: Didn't find class "cz.cvut.kosapp.model.entities.Parallel" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
    ... 16 more 

回答

0

隨着Parcelable有時有一個奇怪的問題,即它無法找到進程之間的階級,也許這裏有人能提醒我爲什麼。在您傳遞給您的Parallel模型對象中,應添加一個顯式調用getClassLoader()

所以這樣的事情...

protected Parallel(Parcel source) { 
     super(source); 

     // Explicitly get the class loader of this class as there is sometimes a 
     // weird issue 
     // when passing Parcel between processes 
     Bundle data = source.readBundle(Parallel.class.getClassLoader()); 
     this.foo = data.getLong("foo"); 
     this.bar = data.getString("bar"); 
    } 
+0

謝謝。我會仔細檢查,並會回來的結果.. – simekadam

+0

呃..它沒有幫助:/ 這是我的代碼爲這兩個有問題的類.. https://gist.github.com/simekadam/ 6789724 https://gist.github.com/simekadam/6789727 – simekadam

相關問題