web-dev-qa-db-fra.com

La classe X n'est pas abstraite et n'implémente pas fun writeToParcel () défini dans Android.os.Parcelable

Dans mon Android, je souhaite ajouter un ensemble comprenant un objet Place décrit ci-dessous à mon intention. Étant donné que la sérialisation était lente et déconseillée, j'ai préféré Parcelable.

Bien que j'utilise Kotlin 1.3.31, j'ai des problèmes de parcellisation de certaines classes de données. Exemple:

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

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

et Android Studio se plaint:

La classe 'Place' n'est pas abstraite et n'implémente pas le membre abstrait public fun fun writeToParcel (p0: Parcel !, p1: Int): unité définie dans Android.os.Parcelable

Selon certains tutoriels

C'est tout! Vous n'avez plus besoin d'écrire de méthodes de colis!

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

et je ne veux pas utiliser

androidExtensions {
    experimental = true
}

dans les trucs de production.

Quelles alternatives aurais-je ici?

13

Vous pouvez toujours simplement implémenter Parcelable (cmd + enter/alt + enter sur le nom de classe -> `Add Parcelable Implementation" afin que IDE pour créer des schémas de méthode pour vous) si vous ne voulez pas/ne peut pas utiliser d'extensions expérimentales.

Cependant, j'utilise @Parcelize dans un environnement de production (après de nombreux tests) depuis plus d'un an, sans aucun problème. (Juste une opinion cependant, ne disant pas que vous devriez)

0
r2rek