1

Ich arbeite an einer Anwendung, in der ich Fragmente und eine Naviagaton Schublade Aktivität verwenden. Ich habe dort einige grundlegende Dinge gemacht, für die ich oft "findViewById" schreiben musste.FindViewById in Fragmente

Normalerweise funktioniert es gut, aber in th onCreatView eines Fragments habe ich Probleme. Überall sagt das Programm "kann Methode findviewbyid nicht auflösen", wo ich findviewbyId verwende.

ich viele Fragen und Antworten zu diesem Thema gelesen und versucht, alles aus:

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; 

Aber nein davon hilft zu lösen mein Problem ...

komplette Code:

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); 
    } 
} 

So wie kann ich Textviews, imageviews, Spinner und so weiter in einem Fragment verwenden ???

EDIT: Ich habe ein neues einfaches Projekt und weiß, dass ich mit Buttons arbeiten, Textview ..., aber ich weiß nicht, ob es normal ist, in Fragmenten zu erhalten Warnung während der Initialisierung Objekte:

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

Als ich mit meiner Maus auf (Textview) gehe ich diesen Bericht erhalten:

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

dies in Ordnung ist? Wie kann ich das lösen?

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

Beachten Sie, dass das Layout fragment_first die Ansichten Sie (das heißt der Spinner) in diesem Fall finden wünschen sollte:

Antwort

2

sollte dies das Problem ändern onCreateView() wie unten lösen.

+0

dies nicht mein Problem zu lösen. Was meinst du mit dem letzten Satz? Dass ich einen Spinner und die Spinner ID in der first_fragment XML-Datei brauche? Ja, ich habe dies – user7940193

+0

@ user7940193 was ich meine ist, das Spinner-Objekt sollte zu der XML-Layout-Datei hinzugefügt werden, die Sie aufblasen, und es sollte die ID 'Spinner' haben, welchen Fehler bekommen Sie jetzt? 'NullException' oder Kompilierfehler oder was? – Yazan

+0

Ja, ich habe es getan, aber es hat nicht funktioniert. Jetzt habe ich ein neues sehr einfaches Projekt erstellt und es funktioniert, weiß nicht, was ich falsch gemacht habe, aber ich habe einen anderen Fehler. Ich werde den Code der Frage in Kürze hinzufügen – user7940193

1

Versuchen Sie folgendes:

@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

Dank gehört, aber es hilft nicht – user7940193

+0

Dies war nicht in Ihrem vollständigen Code. Probieren Sie die Lösung aus. –