Parcelableを使用するために、私はKotlin 1.1.4のこのリリースに従いました: https://blog.jetbrains.com/kotlin/2017/08/kotlin-1-1-4-is-out/
この行をプロジェクトに追加します
androidExtensions {
experimental = true
}
次に、クラスを定義します。
@Parcelize
class User(val firstName: String, val lastName: String) : Parcelable
WriteToParcel()メソッドとcreateFromParcel()メソッドは自動的に作成されます
override fun writeToParcel(parcel: Parcel, flags: Int) {
...
}
しかし、メッセージ付きの「override」キーワードにエラーがあります
OVERRIDING_WRITE_TO_PARCEL_IS_NOT_ALLOWED:「writeToParcel」のオーバーライドは許可されていません。代わりに「Parceler」コンパニオンオブジェクトを使用してください
正しい方法を教えてもらえますか?
編集:デフォルトのコンストラクターで定義されたプロパティのみがParcelに追加され、その他は追加されませんか?このクラスでこの警告が表示されます。
PROPERTY_WONT_BE_SERIALIZED:プロパティは「パーセル」にシリアル化されません。 '@Transient'アノテーションを追加して、警告を削除します
Kotlin1.1.4バージョンを使用していることを確認してください
WriteToParcel/createFromParcelメソッドをオーバーライドする必要はありません。特定のことをしない限り、スタジオからエラーが発生しますが、このエラーは無視してかまいません。 @Parcelizeを理解するために、lintチェックはまだ更新されていません。対応するYouTrackの問題は次のとおりです。
https://youtrack.jetbrains.com/issue/KT-193
Createクラスを使用するには
それからそれを次のように渡す
それを取り戻すには
これはリントチェックのみであるため、警告は無視しても問題ありません。
今のところそれを取り除くには@SuppressLint("ParcelCreator")
を使用するだけです
例:
@SuppressLint("ParcelCreator")
@Parcelize
class User(val firstName: String, val lastName: String) : Parcelable