Fragmente onClick-Methode im Fragmentelement

8

Ich habe ziemlich viele Artikel über Fragmente gelesen, aber ich bin immer noch verwirrt darüber, wie man was macht.

Ich habe eine MainActivity, die zwei Fragmente nebeneinander anzeigt. In einem der Fragmente habe ich einen Button und definiere in den Fragmenten Layout-XML für den Button

%Vor%

Nun möchte ich diese Methode implementieren

%Vor%

Ich hätte angenommen, dass dies in FragmentA.java und nicht in MainActivity.java implementiert werden muss. Aber es funktioniert nur, wenn diese Methode in MainActivity.java implementiert ist. Warum das? Für mich ergibt das keinen Sinn. Pre Honeycomb eine Methode, die zu einer Aktivität gehört, blieb in dieser Aktivität, jetzt füge ich auf einem Tablet viele Aktivitäten zu einer MainActivity zusammen und alle verschiedenen Methoden werden zusammengeführt? Was stellst du dann zum Beispiel in FragmentA.java? Was ist, wenn Sie eine eigene Aktivität starten müssen, weil diese App auf einem Handheld ausgeführt wird, dann muss die onClick-Methode nicht in der MainActivity enthalten sein, sondern in der Activity, die dann aufgerufen werden muss. Ich bin im Moment ziemlich verwirrt ...

    
AndyAndroid 20.12.2011, 15:07
quelle

2 Antworten

4

Ich bin mir nicht sicher, was das spezifische Problem ist, aber vielleicht hilft das.

Aus der Android-Dokumentation zu Fragment s:

  

Sie sollten jedes Fragment als eine modulare und wiederverwendbare Aktivitätskomponente entwerfen. Das heißt, da jedes Fragment sein eigenes Layout und sein eigenes Verhalten mit seinen eigenen Lebenszyklus-Callbacks definiert, können Sie ein Fragment in mehrere Aktivitäten einschließen. Daher sollten Sie das Design für die Wiederverwendung entwerfen und vermeiden, ein Fragment direkt von einem anderen Fragment zu manipulieren.

Das heißt, Sie sollten niemals ein Fragment von einem anderen Fragment manipulieren; Vielmehr sollte dies über die zugrunde liegende Aktivität erfolgen. Lesen Sie den Abschnitt "Erstellen von Ereignisrückrufen für die Aktivität" in diesem Artikel für weitere Informationen (es ist wichtig, Zeug !!).

Wenn Sie andererseits möchten, dass die Schaltfläche eine Aktion innerhalb von Fragment selbst ausführt (dh wenn Sie einen Button -Klick wünschen, um den Text eines TextView innerhalb des Fragments zu ändern), sollten Sie implementieren Dies ist in Fragment , nicht in Activity (weil das resultierende Verhalten in Fragment enthalten ist und nichts mit dem übergeordneten Activity zu tun hat).

Hinterlasse einen Kommentar und ich kann klären, ob mein Beitrag verwirrend ist ... Ich habe erst vor kurzem begonnen, Fragment selbst zu verstehen:).

    
Alex Lockwood 16.01.2012, 20:41
quelle
0

Nun,

Ich denke, es hängt mit der Hierarchie der androiden Kontextstruktur zusammen. Aktivität ist der Host aller untergeordneten Ansichten und daher können Sie sagen, dass das Fragment tatsächlich den Kontext des Hosts verwendet. Deshalb wird bei der Verwendung von onClick mit dem Fragmentsystem immer in der Hostaktivität des Fragments gesucht.

Aktivieren Sie es. Beschreibung des Android-Entwicklers onClick

Ich habe keine Sache überprüft, aber Sie könnten einen Test machen. Indem Sie die Implementierung in einer Host-Aktivität anstatt in einem Fragment bereitstellen, aber onClick auf der Layout-Datei von fragment verwenden. Sie sollte die Methode von parent aufrufen.

    
kaushal trivedi 14.09.2013 00:57
quelle