【问题标题】:AndroidRuntime error : Parcel unable to marshal valueAndroidRuntime 错误:包裹无法封送值
【发布时间】:2016-02-16 14:18:24
【问题描述】:

我已经编写了一个这样的类。但是当我使用它时,在这个覆盖的方法中会发生运行时错误

 @Override
 public void writeToParcel(Parcel dest, int flags) {
     dest.writeValue(synclistener);
 }

我的班级

public class SyncListenEntity implements Parcelable {
    private LocationServiceProvider.LocationSyncNotifier synclistener;

    public LocationServiceProvider.LocationSyncNotifier getSynclistener() {
        return synclistener;
    }

    public void setSynclistener(LocationServiceProvider.LocationSyncNotifier synclistener) {
        this.synclistener = synclistener;
    }

    public SyncListenEntity() {
    }

    protected SyncListenEntity(Parcel in) {
        synclistener = (LocationServiceProvider.LocationSyncNotifier) in.readValue(LocationServiceProvider.LocationSyncNotifier.class.getClassLoader());
    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeValue(synclistener);
    }


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

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

位置通知器

public interface LocationNotifier {
     void onNewLocationArrived(Location loaction, String privider);
}

例外:

java.lang.RuntimeException: Parcel: unable to marshal value
Caused by: java.lang.RuntimeException: Parcel: unable to marshal value
     com.library.gps.SyncListenEntity.writeToParcel(SyncListenEntity.java)
     android.app.ActivityManagerProxy.getIntentSender(ActivityManagerNative.java:3835‌​)
     com.library.gps.LocationServiceProvider.enableUserTrackingService(LocationServic‌​eProvider.java:64)
     com.ceylonlinux.multilac.activity.FrmHome.onCreate(FrmHome.java:365) 

【问题讨论】:

  • 请始终发布异常的完整堆栈跟踪。
  • 还将源发布到 LocationSyncNotifier。
  • 这些是我遇到的错误 java.lang.RuntimeException: Parcel: 无法编组值 原因:java.lang.RuntimeException: Parcel: 无法编组值 com.library.gps.SyncListenEntity.writeToParcel (SyncListenEntity.java) android.app.ActivityManagerProxy.getIntentSender(ActivityManagerNative.java:3835) com.library.gps.LocationServiceProvider.enableUserTrackingService(LocationServiceProvider.java:64) 在 com.ceylonlinux.multilac.activity.FrmHome.onCreate(FrmHome. java:365)
  • LocationSyncNotifier 是一个接口
  • 是的,您能否编辑您的答案以显示代码?

标签: java android parcelable


【解决方案1】:

您正在尝试使用writeParcel() 编写不符合文档中所述要求的对象。您只能将值写入 javadoc 中所述类型的 Parcel。

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2021-03-22
    • 2022-01-25
    相关资源
    最近更新 更多