Android Parcelableなクラスのメンバ変数に独自オブジェクトを入れる(Kotlin サンプルコード)

例えば、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.


Parcelは小包みって意味らしいです。