Pourquoi mon contexte dans ma Fragment null?
J'ai une question concernant l'utilisation de contexte dans un fragment. Mon problème est que je reçois toujours une NullpointerException. Voici ce que je fais:
Créer une classe qui étend la SherlockFragment. Dans cette classe j'ai une instance d'une autre classe d'aide:
public class Fragment extends SherlockFragment {
private Helper helper = new Helper(this.getActivity());
//More code ...
}
Ici est un extrait de l'autre de la classe Helper:
public class Helper {
public Helper(Context context) {
this.context = context;
}
//More code ...
}
Chaque fois que j'appelle context.someMethod
(par exemple, le contexte.getResources () ), je reçois une NullPointerException. Pourquoi est-ce?
Ressemble
SherlockFragment#activity
n'est pas défini lors de l'initialisation de votre fragment mais injecté dans une phase ultérieure, ainsi null
dans le constructeur.OriginalL'auteur user2426316 | 2013-08-09
Vous devez vous connecter pour publier un commentaire.
Vous tentez d'obtenir un
Context
lorsque leFragment
est instanciée la première fois. À l'époque, il n'est PAS attaché à unActivity
, donc il n'est pas valideContext
.Ont un look à la Fragment Du Cycle De Vie. Tout ce qui est entre
onAttach()
àonDetach()
contiennent une référence à un Contexte valide instance. Cette instance de Contexte est généralement récupéré pargetActivity()
Exemple de Code:
J'ai utilisé
onAttach()
dans mon exemple, @LaurenceDawson utiliséonActivityCreated()
. Noter les différences. DepuisonAttach()
obtient uneActivity
passé déjà, je n'ai pas utiliségetActivity()
. Au lieu de cela, j'ai utilisé l'argument passé. Pour tous les autres méthodes du cycle de vie, vous devrez utilisergetActivity()
.J'ai ajouté un exemple. Les deux mines et LaurenceDawson de travail.
OriginalL'auteur A--C
Quand vous l'instanciation de votre classe d'aide? Assurez-vous qu'il y a après onActivityCreated() dans le cycle de vie du Fragment.
http://developer.android.com/images/fragment_lifecycle.png
Le code suivant devrait fonctionner:
OriginalL'auteur Ljdawson
getActivity()
pouvez retournernull
si elle est appelée avantonAttach()
est appelée. Je recommande quelque chose comme ceci:OriginalL'auteur Taormina