La méthode findViewById(int) n'est pas défini pour le type
Je reçois le message d'erreur
La méthode findViewById(int) n'est pas défini pour le type PM_section
lors de la tentative de mettre en œuvre mes Extensible ListView. Je suis sûr que c'est une erreur courante, mais je vais avoir du mal à trouver une solution. Je suis d'essayer d'apprendre des fragments et tel, et il a été une bataille difficile depuis que j'ai commencé. J'ai fait un peu juste de la recherche, et a trouvé un grand nombre de résultats, qui ne semblent pas à m'aider dans mon cas.
Si quelqu'un pouvait me donner un aperçu, ou me diriger dans la bonne direction, je serais très heureux.
Ma petite classe de test est en dessous de
public class PM_section extends Fragment {
// CustomExpListView custExpListView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
View V = inflater.inflate(R.layout.fragment_pm_section_test, container, false);
CustomExpListView custExpListView = (CustomExpListView)
this.findViewById(R.id.ExpandableListView01);
return V;
}//end on create
}
La CustomExpListView classe a été assez bien copier, collé à partir de l'Android exemples de Projets, et est heureux et n'a pas de problèmes.
Vous remercie de m'avoir aidé.
Vous devez vous connecter pour publier un commentaire.
Si
R.id.ExpandableListView01
fait partie deR.layout.fragment_pm_section_test
, puis remplacezthis
avecV
.Fragment
s n'ont pas defindViewById()
méthode. Vous devez utiliser votre gonfléView
au lieu d'obtenir tout ce à partir de votre mise en page.Également envisager d'utiliser des conventions de nommage Java. Variables commencent par des lettres minuscules tandis que les Classes commencent par une Majuscule.
=(CustomExpListView)
. Vous devriez nettoyer votre projet si vous êtes encore en train d'erreur, le casting devrait être le droit.CustomExpListView
s'étendListView
ouView
?CustomExpListView
ne pas étendre un type d'Affichage. L'esprit annonce de la classe (comme votre code a) ici?Activitiy
enView
. Bien sûr, cela ne fonctionnera pas! Ils sont complètement différents types! Je pense que vous avez besoin de lire sur la manière dont les Activités d'interagir avec vue avant qui tentent de Fragments. Surtout depuis que vous avez une quantité importante de code.CustomizedListView
pour une Activité honte à eux.onCreateView()
utiliser le gonflés vue (V
dans votre cas) pour accéder à la disposition de points de vue. Aussi, une fois que vous faites comprendre ce que le code ne et souhaitez le port d'un Fragment, utiliser unListFragment
au lieu de cela, il ne sera probablement rendre la vie plus facile.Simplement à obtenir le fragment de racine de vue en appelant
getView()
et ensuite appelerfindViewById()
méthode:Sans elle, vous ne serez pas en mesure d'utiliser
findViewById()
commeFragment
classe n'est pas elle-même d'une telle méthode.getView()
avant du fragmentonCreateView()
est de retour? Même si tu le pouvais, c'est redondant appel de la méthode, vous avez déjà votre vue de la racine (V
) disponibles dans la méthode.this
avecV
comme dans ma réponse et vous devriez être bon. Cela dit, non,onCreate()
est appelé avantonCreateView()
. Voir le Fragment du cycle de vie. DeonStart()
àonStop()
et tout le reste entre les deux, vous pouvez utilisergetView()
depuis la racine de la Vue de mise en page est maintenant créer.V
au lieu degetView()
car il vous donne le même résultat, mais plus rapide parce que vous avez un accès direct à la vue.