1

Je travaille sur une application dans laquelle j'utilise des fragments et une activité naviagaton tiroir. J'ai fait des choses de base pour lesquelles j'ai souvent dû écrire "findViewById". Normalement, cela fonctionne très bien, mais dans la vueCreatView d'un fragment j'ai eu des problèmes. Partout le programme dit "ne peut pas résoudre la méthode findviewbyid" où j'utilise findviewbyId.FindViewById en Fragments

Je lis beaucoup de questions et de réponses à ce sujet et tout essayé sur:

1.

spinner = (Spinner)getView.findViewById(R.id.spinner); 
return inflater.inflate(R.layout.fragment_first, container, false); 

2.

spinner = (Spinner)getActivity.findViewById(R.id.spinner); 
return inflater.inflate(R.layout.fragment_first, container, false); 

3.

View v = inflater.inflate(R.layout.fragment_first, container, false); 
spinner = (Spinner)v.findViewById(R.id.spinner); 
return v; 

Mais pas de cela aide à résoudre mon problème ...

Code complet:

public class First extends Fragment { 

    Spinner spinner; 


    public First() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

     spinner = (Spinner)findViewById(R.id.spinner); 

     return inflater.inflate(R.layout.fragment_first, container, false); 
    } 
} 

Alors, comment puis-je utiliser textviews, imageviews, spinner et ainsi de suite dans un fragment ???

EDIT: Je fait un nouveau projet simple et sais que je peux travailler avec des boutons, TextView ..., mais je ne sais pas s'il est normal d'obtenir des fragments d'avertissement: objets lors de l'initialisation

textView=(TextView)v.findViewById(R.id.textView); 

Quand je vais avec ma souris je reçois ce rapport sur (TextView):

Casting 'v.findViewById(R.id.textView)' to 'TextView' is redundant 

Est-ce bien? Comment puis-je resoudre ceci?

Répondre

2

cela devrait résoudre le problème modifier onCreateView() comme ci-dessous:

View view = inflater.inflate(R.layout.fragment_first, container, false); 
spinner = (Spinner)view.findViewById(R.id.spinner); 
return view; 

Notez que la mise en page fragment_first devrait avoir les vues que vous souhaitez trouver (i.e. la Tournette) dans ce cas.

+0

cela n'a pas résolu mon problème. Que voulez-vous dire par la dernière phrase? Que j'ai besoin d'un spinner et de l'identifiant spinner dans le fichier xml first_fragment? Oui j'ai ceci – user7940193

+0

@ user7940193 ce que je veux dire, c'est que l'objet Spinner devrait être ajouté au fichier de mise en page XML que vous êtes en train de gonfler, et il devrait avoir l'id 'spinner', quelle erreur obtenez-vous maintenant? 'NullException' ou erreur de compilation ou quoi? – Yazan

+0

Oui, je l'ai fait, mais cela n'a pas fonctionné. Maintenant, j'ai créé un nouveau projet très simple et cela fonctionne, je ne sais pas ce que j'ai fait de mal, mais j'ai une autre erreur. Je vais ajouter le code à la question bientôt – user7940193

1

Essayez ceci:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 
    // Defines the xml file for the fragment 
    View view = inflater.inflate(R.layout.fragment_foo, parent, false); 
    spinner = (Spinner)view.findViewById(R.id.spinner); 
    return view; 
} 
+0

merci, mais cela ne aide pas – user7940193

+0

Ce n'était pas là dans votre code complet. Essayez la solution. –