kotlin - 领域和包裹

时间:2016-08-12 04:59:34

标签: android realm kotlin

我用android studio开发android项目。 我想在kotlin中使用onSaveInstanceState()来保存领域对象。 我的代码是

@Parcel( implementations = arrayOf(UserRealmProxy::class),
         value = Parcel.Serialization.BEAN,
         analyze = arrayOf(User::class))
open class User : RealmObject() {
    open var name: String? = null

    @ParcelPropertyConverter(ListParcelConverter::class)
    open var Items: RealmList<Item>? = null
}

但编译时出现了一些错误:

'Unresolved reference: UserRealmProxy'
'An annotation parameter must be a compile-time constant'

当然,UserRealmProxy已经存在,因为已经编译了项目。 @ParcelPropertyConverter(ListParcelConverter::class)也不起作用。 它会在运行时导致异常:

'java.io.NotSerializableException: io.realm.RealmList'

但是这段代码在java中编译得很好。

我需要你的帮助。

2 个答案:

答案 0 :(得分:0)

您可能需要注释 setter 。请试试这个。

@Parcel( implementations = arrayOf(UserRealmProxy::class),
     value = Parcel.Serialization.BEAN,
     analyze = arrayOf(User::class))
open class User : RealmObject() {
    open var name: String? = null
    open var Items: RealmList<Item>? = null
    @ParcelPropertyConverter(ListParcelConverter::class) set
}

答案 1 :(得分:0)

对于我来说,当我遇到此错误时:'Unresolved reference:UserRealmProxy'。如果我有此包:com.path.model.Album,则必须使用:

import io.realm.com_path_model_AlbumRealmProxy

...
@Parcel(implementations = arrayOf(com_path_model_AlbumRealmProxy::class)