例えば、TaskというクラスとUserというクラスがあります。
Taskのメンバ変数に、Userクラスを指定したいものがあります。
//Task.kt内
@Parcelize
class Task(val id: String, var content: String?, val to:User, var limit:String?):Parcelable{
//中略
}
//User.kt内
class
User(val id: String, val name: String){
//中略
}
ちな、Kotlinのどっかのバージョンから、Parcelableにしたいクラスを超簡単にかけるようになりました!!
以前は、定義しなければならないメソッドなどがいっぱいあって、クラスをParcelableにするのに一手間かかってました。
それが、 Task.ktであるように、
@Parcelable
というアノテーションと、
:Parcelable
で継承するだけでOkになりました。時代が進むっていいね(´ω`)
さて、本題に戻り、上記のTaskとUserでは、下記のエラーが出てこのままではビルドできません。
Type is not directly supported by ‘Parcelize’. Annotate the parameter type with ‘@RawValue’ if you want it to be serialized using ‘writeValue()’
えー。
これ、Userの方もParcelableにすれば直ります。
なので、User.ktを次のようにします。
@Parcelize
class
User(val id: String, val name: String) :Parcelable {
//中略
}
Javaでもこうでしたっけ? 昨日、I forget.