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.

1voto

Mahdi-Malv Punkte 11981
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     View view = inflater.inflate(R.layout.testclassfragment, container, false);
     ImageView imageView = (ImageView) view.findViewById(R.id.my_image);
     return view;
}

Beachten Sie, wenn Sie getView() Methode kann es zu nullPointerException weil es die Wurzelansicht zurückgibt und es wird eine Ansicht nach onCreateView() Methode.

-2voto

GW.G Punkte 11

Das Timing der Transaktion nach .commit() kann dieses Problem ebenfalls verursachen

Ich habe das gleiche Problem (Ansicht in einem Fragment konnte nicht erreicht werden). Der Grund stellte sich heraus, dass - unmittelbar nach (FragmentTransaction) .commit() -, war die Ansicht in der Benutzeroberfläche nicht aktiviert worden. Es gibt keine Garantie wenn Nach .commit() findet die Transaktion statt; sie wird nur in die Warteschlange gestellt. Also habe ich eine (FragmentManager) .executePendingTransactions() um die Durchführung der Transaktion zu erzwingen. Danach funktioniert der Verweis auf die Ansicht wie erwartet!

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