wake-up-neo.com

OnClick in Fragmenten behandeln

Dies ist mein erster Versuch mit Fragments und ich kann mit Android: onClick nicht umgehen

Ich habe einen Button in meinem Fragment XML wie folgt

    <Button
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="@string/save_keywords_button"
        Android:id="@+id/save_keywords"
        Android:layout_marginTop="340dp"
        Android:background="#FF2E7D32"
        Android:textColor="#FFFFFF"
        Android:typeface="normal"
        Android:onClick="myLogic" />

Ich habe viele Ergebnisse gesucht und kann keine genaue Lösung für das Ereignis onClick finden.

Meine Frage lautet: Wie kann ich die ID meiner Schaltfläche erhalten und die myLogic-Methode schreiben? FindViewById () funktioniert nicht in Fragmenten und wo soll ich die Methode? In Fragment oder in meiner Aktivität schreiben? 

6
Uday

Ein besserer Ansatz wäre, OnClickListener in Ihre Fragmentklasse zu implementieren und onCreateView in Ihrem Fragment zu überschreiben, wo Sie den Listener Ihrer Schaltfläche zuweisen. 

Wenn Sie das Attribut onClick in Ihr XML-Layout einfügen, sucht Ihre Aktivität beim Laden nach dem Element in der Aktivität, nicht im Fragment. Dies wird eine Ausnahme auslösen.

Ich würde vorschlagen, eine Fragment-Aktivitäts-Hierarchie zu lesen, um zu verstehen, wann auf Elemente in Ihrem Fragment zugegriffen werden kann.

public class StartFragment extends Fragment implements OnClickListener{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.fragment_start, container, false);

    Button b = (Button) v.findViewById(R.id.save_keywords);
    b.setOnClickListener(this);
    return v;
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.save_keywords:

        ...

        break;
    }
}
}

Referenz von: hier

15
parohy

Versuchen Sie, eine Methode hinzuzufügen

public void myLogic(View v)
1
Nir Horovitz

Android:onClick="myLogic" ruft die Methode myLogic innerhalb des Fragments nicht auf. Verwenden Sie stattdessen OnClickListener, um diese Art von Ereignissen zu behandeln.

Siehe unten stehende Referenzen

Beste Möglichkeit, View.OnClickListener in Android zu implementieren

http://developer.Android.com/reference/Android/view/View.OnClickListener.html

1
GeekDroid

Wenn Sie in fragmen eine Ansicht erhalten möchten, können Sie diese getView().findViewById(R.id.foo); nur ausführen, nachdem onCreateView() aufgerufen wurde. Wenn Sie in xml onClick angeben, müssen Sie keine Verknüpfung zu dieser Methode in Ihrem Programm programmieren. Implementieren Sie diese Methode einfach in Ihre Aktivität.

1
callOfCode