Dienstag, Februar 18, 2020

Die Eigenschaft muss initialisiert oder abstrakt sein

Muss es sein, dumme Frage, aber ich bin wirklich neu auf Kotlin und ich fand keine Lösung.

Wie erklären Klasse Feld? Wie können wir es in java:

protected SharedPreferences mSharedPreferences;

Später in onCreate():

mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

Nun kann ich es benutzen und wo ich es will (in den Unterklassen dieser Basis-Aktivität).

Ich versuche zu tun, gleich in Kotlin:

protected var sharedPreferences : SharedPreferences

Und in onCreate():

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

Aber ich bekomme eine Warnung: „Eigentum muss initialisiert werden, oder Abstrakt sein“

InformationsquelleAutor der Frage Anton Shkurenko | 2015-11-21

1 Kommentar

  1. 79

    Wenn Sie möchten, initialisieren Sie eine Immobilie außerhalb des Konstruktors, dann spät initialisiert Eigenschaften ist, was Sie möglicherweise suchen. Deklarieren Sie die Eigenschaft mit der lateinit modifier, die es erlauben, überspringen Sie die sonst erforderliche Initialisierung und wird die Eigenschaft Zugriff fehlschlagen, mit der Ausnahme, bis einige sinnvollen Wert zugewiesen werden:

    protected lateinit var sharedPreferences: SharedPreferences

    InformationsquelleAutor der Antwort Alexander Udalov

Kostenlose Online-Tests