getView() renvoie la valeur null
Je basicall ont un AsyncTask
(exécution à partir du principal Activity
) qui alimente un ViewPager
à l'intérieur d'un fragment. Je suis gonfler un xml fichier de mise en page pour remplir le ViewPager
.
Le problème est que je ne peux pas obtenir des pointeurs vers les points de vue à l'intérieur de la mise en page (imageview, textview) afin que je puisse les changer lors de l'exécution. Je sais que c'est probablement parce que getView()
retourne null
. J'ai lu que c'est probablement parce que onCreateView()
n'a pas été appelée, encore. Quelqu'un sait comment je peux résoudre ce problème?
Mon code est un peu un gâchis en ce moment.
Voici une explication plus simple pour ce que je fais:
- MainActivity Asynctask alimente une base de données et envoie le pointeur de Fragment. Quelque chose comme SendToFragement(db);
- Le Fragment de méthode ReceiveFromActivity(db) reçoit un pointeur base et remplit la ViewPager.
Il fonctionne très bien si je suis en création de TextViews, la mise en texte et en ajoutant TextViews à la Viewpager. Mais, bien sûr, je veux le faire paraître mieux donc j'ai gonflé un xml de mise en page. Le problème est que je ne peux pas changer le contenu du fichier xml de mise en page parce que getView()
est de retour NULL
donc getView().findViewById()
ne fonctionne pas.
Comment au sujet de certains de code, pour que nous puissions où est ton problème, et de proposer un correctif.
Vous ne pouvez pas faire le travail sur le thread de l'INTERFACE utilisateur de la
doInBackground()
-méthode. Utiliser le onProgressUpdate()
pour afficher les résultats dans l'INTERFACE utilisateur.OriginalL'auteur user1923613 | 2013-02-28
Vous devez vous connecter pour publier un commentaire.
En fonction de la mise en œuvre de votre PagerAdapter, il est possible qu'un Fragment n'est plus en vue ont leur
View
détruites afin de libérer des ressources. En tant que tel, il n'y a pas besoin de mettre à jour leView
car il sera créé à nouveau dansonCreateView()
avec la mise à jour de l'information.getView()
sera de retour en vue, entre les appels àonCreateView()
etonDestroyView()
. En dehors de cela, laFragment
peut encore exister dans la mémoire, mais n'est lié à aucunView
, ainsigetView()
sera de retournull
.Donc, fondamentalement,
View fragmentView = getView(); if(fragmentView != null) {ImageView img = (ImageView) fragmentView.findViewById(R.id.imageView1); img.setImageResource(R.drawable.gasguy);}
mais je suis encore en train un pointeur NULL exemption.Le if est vraie si fragmentView est null. Essayez
!=
à la place.Désolé, je voulais dire
(fragmentView != null)
N'est-il pas de trouver "R. id.imageView1"?
Ces fragments sont une telle douleur. De toute façon, je vous remercie pour votre aide.
OriginalL'auteur DeeV