web-dev-qa-db-ja.com

クラスXは抽象的ではなく、Android.os.Parcelableで定義された楽しいwriteToParcel()を実装していません

私のAndroidアプリで、以下に説明するPlaceオブジェクトを含むバンドルをインテントに追加したいと思います。シリアライズは遅く、お勧めできなかったため、Parcelableを選択しました。

または、Kotlin 1.3.31を使用していますが、一部のデータクラスの分割に問題があります。例:

import Android.os.Parcelable
import kotlinx.Android.parcel.Parcelize

@Parcelize
data class Place(val street: String, val postal: String, val city: String) : Parcelable

およびAndroid Studioが不満を言う:

クラス 'Place'は抽象ではなく、抽象メンバーを実装していませんpublic abstract fun writeToParcel(p0:Parcel !, p1:Int):Android.os.Parcelableで定義されているユニット

いくつかのチュートリアルによると

それでおしまい!パーセルメソッドを記述する必要はもうありません。

https://Android.jlelse.eu/yet-another-awesome-kotlin-feature-parcelize-5439718ba22

そして私は使いたくない

androidExtensions {
    experimental = true
}

プロダクションのもの。

ここにはどのような選択肢がありますか?

13

したくない場合は、常にIDEメソッドスキーマを作成するためのIDE $ ===)の順序でParcelable(cmd + enter/alt + enter on class name-> `Add Parcelable Implementation"を実装できます。 /実験的な拡張機能は使用できません。

しかし、私はプロド環境で@Parcelizeを(多くのテストを行った後)1年以上使用しており、問題はありませんでした(ただし、意見はありますが、そうする必要はありません)。

0
r2rek