Warum ist mein Kontext in meinem Fragment null?

8

Ich habe eine Frage bezüglich der Verwendung von Kontext in einem Fragment. Mein Problem ist, dass ich immer eine NullpointerException bekomme. Hier ist, was ich tue:

Erstellen Sie eine Klasse, die das SherlockFragment erweitert. In dieser Klasse habe ich eine Instanz einer anderen Helper-Klasse:

%Vor%

Hier ist ein Auszug der anderen Helper-Klasse:

%Vor%

Jedes Mal, wenn ich context.someMethod aufruft (z. B. context.getResources ()), erhalte ich eine NullPointerException. Warum ist das so?

    
user2426316 09.08.2013, 20:14
quelle

3 Antworten

16

Sie versuchen, eine Context zu erhalten, wenn die Fragment zuerst instanziiert wird. Zu diesem Zeitpunkt ist es NICHT an Activity angehängt, daher gibt es kein gültiges Context .

Sehen Sie sich den Fragment Lifecycle an. Alles zwischen onAttach() bis onDetach() enthält einen Verweis auf eine gültige Context-Instanz. Diese Kontextinstanz wird normalerweise über getActivity()

abgerufen

Codebeispiel:

%Vor%

Ich habe onAttach() in meinem Beispiel verwendet, @LaurenceDawson hat onActivityCreated() verwendet. Beachten Sie die Unterschiede. Da onAttach() bereits eine Activity erhalten hat, habe ich getActivity() nicht verwendet. Stattdessen benutzte ich das Argument bestanden. Für alle anderen Methoden im Lebenszyklus müssen Sie getActivity() verwenden.

    
A--C 09.08.2013, 20:17
quelle
3

Wann instanzieren Sie Ihre Helper-Klasse? Stellen Sie sicher, dass es nach onActivityCreated () im Lebenszyklus des Fragments ist.

Ссылка

Der folgende Code sollte funktionieren:

%Vor%     
Ljdawson 09.08.2013 20:17
quelle
1

getActivity() kann null zurückgeben, wenn es aufgerufen wird, bevor onAttach() aufgerufen wird. Ich würde so etwas empfehlen:

%Vor%     
Taormina 09.08.2013 21:09
quelle