【问题标题】:Crash when trying to leave a fragment that contains a Parceler unwrapped object尝试留下包含 Parceler 未包装对象的片段时崩溃
【发布时间】:2015-12-10 05:09:27
【问题描述】:

我有一个带有@Parcel 注释的抽象类。它有一个具体的子类MyMovie,但它没有注释。

我可以通过将MyMovie 传递给 args 包来成功创建片段。一切都很好,包装 MyMovie 和打开包裹。

当我尝试离开片段时出现问题,例如,按下主页按钮。这是堆栈跟踪:

09-14 16:39:33.688  29389-29389/com.example.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.myapp, PID: 29389
org.parceler.ParcelerRuntimeException: Unable to find generated Parcelable class for com.example.myapp.MyMovie, verify that your class is configured properly and that the Parcelable class com.example.myapp.MyMovie$$Parcelable is generated by Parceler.
        at org.parceler.Parcels$ParcelCodeRepository.get(Parcels.java:201)
        at org.parceler.Parcels.wrap(Parcels.java:85)
        at org.parceler.Parcels.wrap(Parcels.java:69)
        at org.parceler.NonParcelRepository$ListParcelable$1.itemToParcel(NonParcelRepository.java:280)
        at org.parceler.converter.CollectionParcelConverter.toParcel(CollectionParcelConverter.java:38)
        at org.parceler.converter.CollectionParcelConverter.toParcel(CollectionParcelConverter.java:27)
        at org.parceler.NonParcelRepository$ConverterParcelable.writeToParcel(NonParcelRepository.java:1222)
        at org.parceler.NonParcelRepository$ListParcelable.writeToParcel(NonParcelRepository.java:269)
        at android.os.Parcel.writeParcelable(Parcel.java:1285)
        at android.os.Parcel.writeValue(Parcel.java:1204)
        at android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
        at android.os.Bundle.writeToParcel(Bundle.java:1692)
        at android.os.Parcel.writeBundle(Parcel.java:636)
        at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:137)
        at android.os.Parcel.writeTypedArray(Parcel.java:1133)
        at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:384)
        at android.os.Parcel.writeParcelable(Parcel.java:1285)
        at android.os.Parcel.writeValue(Parcel.java:1204)
        at android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
        at android.os.Bundle.writeToParcel(Bundle.java:1692)
        at android.os.Parcel.writeBundle(Parcel.java:636)
        at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:138)
        at android.os.Parcel.writeTypedArray(Parcel.java:1133)
        at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:384)
        at android.os.Parcel.writeParcelable(Parcel.java:1285)
        at android.os.Parcel.writeValue(Parcel.java:1204)
        at android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
        at android.os.Bundle.writeToParcel(Bundle.java:1692)
        at android.os.Parcel.writeBundle(Parcel.java:636)
        at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2526)
        at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3112)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
        at dalvik.system.NativeStart.main(Native Method)

这就是我在我的应用级build.gradle 中包含Parceler 的方式:

compile 'org.parceler:parceler-api:1.1.1'

感谢您的帮助。

【问题讨论】:

  • 我做了以下解决这个问题:1)使抽象类具体2)注释具体类,3)应用apt插件。

标签: android-fragments parceler


【解决方案1】:

我猜您需要在 Gradle 脚本中包含 Parceler 注释处理器:

apt 'org.parceler:parceler:1.1.5'

http://parceler.org#getting_parceler

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多