1195 Stimmen

findViewById in Fragment

Ich versuche, ein ImageView in einem Fragment zu erstellen, das auf das ImageView-Element verweist, das ich in der XML-Datei für das Fragment erstellt habe. Allerdings ist das findViewById Methode funktioniert nur, wenn ich eine Activity-Klasse erweitere. Gibt es eine Möglichkeit, wie ich sie auch in Fragmenten verwenden kann?

public class TestClass extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        ImageView imageView = (ImageView)findViewById(R.id.my_image);
        return inflater.inflate(R.layout.testclassfragment, container, false);
    }
}

En findViewById Methode weist einen Fehler auf, der besagt, dass die Methode undefiniert ist.

16voto

priti Punkte 804

1) zuerst das Layout des Fragments aufblasen, dann kann man findviewbyId verwenden.

View view = inflater.inflate(R.layout.testclassfragment, container, false);
             ImageView imageView = (ImageView) view.findViewById(R.id.my_image);
             return view;

12voto

sandhu Punkte 285
EditText name = (EditText) getView().findViewById(R.id.editText1);
EditText add = (EditText) getView().findViewById(R.id.editText2);

11voto

Kartik Shandilya Punkte 3590

Anmerkung:

Ab API-Stufe 26 müssen Sie das Ergebnis von findViewById auch nicht speziell umwandeln, da der Rückgabetyp durch Inferenz bestimmt wird.

Das können Sie jetzt einfach tun,

public View onCreateView(LayoutInflater inflater, 
                         ViewGroup container, 
                         Bundle savedInstanceState) {
     View view = inflater.inflate(R.layout.testclassfragment, container, false);
     ImageView imageView =  view.findViewById(R.id.my_image); //without casting the return type
     return view;
}

11voto

Pajeh Punkte 666

Einverstanden mit dem Aufruf findViewById() auf die Ansicht.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View V = inflater.inflate(R.layout.testclassfragment, container, false);
    ImageView imageView = (ImageView) V.findViewById(R.id.my_image);

    return V;
}

10voto

Manoj ahirwar Punkte 954

Utilice

imagebutton = (ImageButton) getActivity().findViewById(R.id.imagebutton1);

imageview = (ImageView) getActivity().findViewById(R.id.imageview1);

es wird funktionieren

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X