2016-08-12 61 views
3

我使用android studio開發了android項目。 我想在kotlin中使用onSaveInstanceState()保存領域對象。 我的代碼是kotlin - realm和parcel

@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中編譯得很好。

我需要你的幫助。

+0

您是否需要**來包裹而不是重新查詢對象? – EpicPandaForce

+0

首先,我得到了同樣的信息'未解析的參考:UserRealmProxy',但它在構建項目後消失。 – zaki50

+0

你可以試試'@field:ParcelPropertyConverter(ListParcelConverter :: class)'而不是'@ParcelPropertyConverter(ListParcelConverter :: class)'嗎? – zaki50

回答

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 
}