Ich habe ein Szenario, in dem ein Fragment eine benutzerdefinierte Ansicht (durch Erweitern der View-Klasse) in seinem Layout hat. Die benutzerdefinierte Ansicht muss auf einige Fragmentmethoden zugreifen. Aber ich kann keine Fragmentverweise innerhalb einer benutzerdefinierten Ansicht abrufen. Ich bin auch nicht in der Lage, irgendeinen Weg zu erhalten, um Fragment von der kundenspezifischen Ansicht (die ein Kind des Fragments ist) zuzugreifen
Wie bei androiden Fragmenten: Wir bekommen Kontext innerhalb der Konstruktoren der Ansichten. Dieser Kontext ist eine Instanz der Aktivität. Aber es gibt keine Möglichkeit, einen Verweis auf das Fragment zu erhalten, das die customview hostet.
Bitte lassen Sie mich wissen, wie Sie in einer benutzerdefinierten Ansicht auf das Fragment zugreifen.
BEARBEITEN:
Hinzufügen des Codes zum besseren Verständnis meines Problems:
MeinFragment .java
Öffentliche Klasse MyFragment erweitert Fragment {
%Vor% //i can access views from fragment, but not vice versa.
}
}
myFragmentview.xml
%Vor%
Öffentliche Klasse CustomView erweitert die Ansicht {
%Vor% // Now using context, we can access activity insatnce inside this customView and can call any method of activity instance.
//But we cannot do this for fragments. There is not way to access parent fragment at this point. I cannot access selectedOptionIndex and use it to set in this view.
//if view can access the parent activty, then it should also have an access to parent fragment.
}
}
OK. In deinen eigenen Worten:
Wie bei androiden Fragmenten: Wir bekommen Kontext innerhalb der Konstruktoren von die Ansichten. Dieser Kontext ist eine Instanz der Aktivität. Aber es gibt keinen Möglichkeit, einen Verweis auf das Fragment zu erhalten, das die customview hostet.
Also, der Kontext ist die Instanz der Aktivität, oder? Nun, von diesem Aktivitätskontext ausgehend, glaube ich, dass Sie den Verweis auf Ihr Fragment erhalten können, wenn Sie Ihrem Fragment einen String-Tag-Namen oder eine ID mit findFragmentByTag(String tag)
bzw. findFragmentById(int id)
gegeben haben.
HTH.
Ich finde die Lösung und versuche es mit mir
Im Konstruktor der benutzerdefinierten Ansicht erhalten Sie einen Verweis auf den Kontext und wandeln ihn in die Aktivitätsklasse
um %Vor%Und in der Methode, die Sie Fragment-Methode
aufrufen möchten %Vor%Verwenden Sie den Konstruktor der Ansicht, um das Fragment selbst und nicht seine Aktivität zu übergeben. Es ist eine tiefe Kopie, so dass Sie in der Ansicht auf Ihr Fragment zugreifen können.
%Vor%}
Mach dir keine Sorgen, es ist das gleiche Fragment - wenn du kein neues verwendest ... () -
Tags und Links android android-fragments android-custom-view