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.

3voto

Mayank Garg Punkte 1176

In Fragmenten benötigen wir eine Ansicht dieses Fensters, so dass wir ein onCreateView dieses Fragments erstellen.

Holen Sie sich dann die Ansicht und verwenden Sie sie, um auf jede einzelne Ansichts-ID dieser Ansichtselemente zuzugreifen.

  class Demo extends Fragment
    {
        @Override
        public View onCreateView(final LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState)
        {
            View view =inflater.inflate(R.layout.demo_fragment, container,false);
            ImageView imageview=(ImageView)view.findViewById(R.id.imageview1);

            return view;
        }
    }

3voto

Devendra Kulkarni Punkte 129

Innerhalb der Methode onCreateView

1) Zuerst müssen Sie das Layout/die Ansicht, die Sie hinzufügen möchten, aufblasen z.B.. LinearLayout

LinearLayout ll = inflater.inflate(R.layout.testclassfragment, container, false);

2) Dann können Sie Ihre imageView id von Layout finden

ImageView imageView = (ImageView)ll.findViewById(R.id.my_image);

3) das aufgeblasene Layout zurückgeben

return ll;

3voto

Surajit Mondal Punkte 182

Sie müssen die Ansicht aufblasen

public class TestClass extends Fragment {

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

2voto

Ganesh Punkte 783

Das ist sehr einfach zu machen:

 @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View fragmentView = inflater.inflate(R.layout.testclassfragment, container, false);
            ImageView imageView = (ImageView)fragmentView.findViewById(R.id.my_image);
            return fragmentView;
       }

2voto

Amit Punkte 557

Der einfachste Weg, solche Dinge zu verwenden, ist die Verwendung eines Buttermessers Damit kann man beliebig viele Onclciklistener durch @OnClick() wie unten beschrieben hinzufügen:

public class TestClass extends Fragment {
    @BindView(R.id.my_image) ImageView imageView;
    @OnClick(R.id.my_image)
    public void my_image_click(){
        yourMethod();
    }
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.testclassfragment, container, false);
        ButterKnife.bind(getActivity,view);
        return view;
    }
}

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