2016-04-13 14 views
-5

Wenn ich am Anfang der Aktivität eine gemeinsame Einstellung erstellt habe, schlägt die Laufzeit der App fehl. Auf der anderen Seite, wenn ich die gemeinsamen Einstellungen in eine Methode legen, als die App läuft reibungslos. Ich möchte die gemeinsamen Einstellungen an die Spitze der Klasse stellen, damit ich nicht die gemeinsamen Einstellungen in jeder einzelnen Methode erstellen muss.Warum kann ich am Anfang einer Android-Aktivität keine gemeinsamen Einstellungen erstellen?

Warum kann ich keine gemeinsamen Einstellungen global erstellen? Jetzt, wo ich weiß, dass ich die gemeinsamen Einstellungen nicht als globales Objekt erstellen kann, gibt es eine Möglichkeit, dass ich nicht die gemeinsamen Einstellungen für jede Methode erstellen muss?

+3

Sie können eine 'SharedPreferences' -Variable als Klassenfeld deklarieren, aber Sie können sie erst 'onCreate()' initialisieren. –

Antwort

3

Angenommen, Sie meinen es auf globaler Ebene in einer Aktivität initialisieren - weil eine Aktivität kein gültiger Kontext ist, bis onCreate aufgerufen wird. Zu dem Zeitpunkt, zu dem der Konstruktor aufgerufen wird (was dann der Fall ist, wenn diese Variablen initialisiert werden), wird die Klasse nicht mit allen Daten eingerichtet, die gültig sein müssen, so dass die Verwendung als Kontext zu einem Absturz führt.