Tag: kotlin parceler

将RealmObject类转换为Kotlin时编译时错误

这是我的原始RealmObject Parceler注释。 @Parcel(implementations = {AlbumRealmProxy.class}, value = Parcel.Serialization.BEAN, analyze = {Album.class}) public class Album extends RealmObject { @PrimaryKey @SerializedName(“id”) private String id; @SerializedName(“artist_id”) private String artistId; @SerializedName(“title”) private String title; @SerializedName(“artist_name”) private String artist; @SerializedName(“images”) private RealmList artwork; @SerializedName(“tracks”) private RealmList tracks; @SerializedName(“artist_bio”) private String artistBio; @ParcelPropertyConverter(RealmListParcelConverter.class) public void setArtwork(RealmList artwork) { this.artwork = artwork; […]

错误:Parceler:无法找到类型io.realm.RealmList的读/写生成器

我正在使用Kotlin编程一个项目: Kotlin版本:1.1.3-2 Parcerler版本1.1.9 Realm版本3.2.0 我使用Parceler作为FragmentArgs与RealmObjects并得到以下崩溃。 Parceler:无法找到类型为io.realm.RealmList的读/写生成器 我的班级工作是这样的: @Parcel(value = Parcel.Serialization.BEAN, analyze = arrayOf(Job::class)) open class Job( @PrimaryKey open var tweetId: Long? = -1L, open var text: String = "", open var title: String = "", open var longitude: Double? = null, open var latitude: Double? = null, open var link: String = "", @ParcelPropertyConverter(RealmStringListParcelConverter::class) open […]

在Kotlin Android中使用Parceler时没有虚方法错误

我通过Intent将对象Channel从一个活动传递给另一个活动。 我使用Parceler。 应用程序崩溃,说它找不到虚拟方法getLatitude() 。 我得到这个错误: ——— beginning of crash 06-30 16:28:48.501 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.app.debug, PID: 22168 java.lang.NoSuchMethodError: No virtual method getLatitude()D in class Lim/grouvi/app/entity/LocationDetails; or its super classes (declaration of 'im.grouvi.app.entity.LocationDetails' appears in /data/app/com.example.app.debug-1/split_lib_slice_6_apk.apk) at im.grouvi.app.entity.LocationDetails$$Parcelable.write(LocationDetails$$Parcelable.java:40) at im.grouvi.app.entity.Channel$$Parcelable.write(Channel$$Parcelable.java:56) at im.grouvi.app.entity.Membership$$Parcelable.write(Membership$$Parcelable.java:51) at im.grouvi.app.entity.Membership$$Parcelable.writeToParcel(Membership$$Parcelable.java:30) at android.os.Parcel.writeParcelable(Parcel.java:1496) at android.os.Parcel.writeValue(Parcel.java:1402) 我的LocationDetails类: import org.parceler.Parcel import java.util.* @Parcel(Parcel.Serialization.BEAN) […]

使用带有Kotlin数据类的Parceler与构造函数进行序列化

有没有办法使用Parcel的Kotlin数据类和构造函数进行序列化,而@ParcelProperty每个字段使用@ParcelProperty注释? 如果我尝试使用这样的库: @Parcel data class Valve @ParcelConstructor constructor(val size: Int) 我得到Error:Parceler: No corresponding property found for constructor parameter arg0 。 但是,如果我添加@ParcelProperty("size")它工作得很好。 这是为什么? 更新 : 还有另一种使用这个库的方法。 我可以删除@ParcelConstructor注释,但是我会得到错误 Error:Parceler: No @ParcelConstructor annotated constructor and no default empty bean constructor found. 我认为(还没有测试过)我也可以使所有的构造参数可选,并添加@JvmOverloads但有一个副作用,我必须检查类的所有属性,如果它们为null或不。 更新2 : 这对我来说是有效的: @Parcel data class Valve(val size: Int? = null) 简而言之,生成的Java类必须具有默认的空构造函数。 达到这个目的的一个方法就是按照上面的方法 – 所有变量都应该有默认值。