java - Android运行时错误: Parcel unable to marshal value

标签 java android parcelable

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

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

我的类(class)

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);
}

异常(exception):

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) 

最佳答案

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

关于java - Android运行时错误: Parcel unable to marshal value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35424484/

相关文章:

java - 在另一个类的 JFrame 上显示 JPanel

java - Android 的 CountDownTimer - 增加或减少计数

android - 如何获得XYSeries X位置的屏幕X位置?

java - 从 Fragment 调用 Activity

Android 应用程序在方向更改时重置,最佳处理方式?

android - 既然 kotlin-android-extensions 已被弃用,如何使用 @Parcelize?

java - 将秒转换为人类可读格式 MM :SS Java

java - 使用 Spring JDBC batchUpdate 时是否有获取生成的 key ?

android - ACTION OPEN DOCUMENT TREE 只返回空的 Recent 文件夹

java - 无法读取另一个可分割对象中的可分割对象