Zugreifen auf Fragmentverweise in einer benutzerdefinierten Ansicht

8

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

%Vor%

}

    
Manish 30.11.2013, 12:48
quelle

3 Antworten

7

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.

%Vor%

HTH.

    
VJ Vélan Solutions 30.11.2013, 19:01
quelle
2

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%     
mohammed momn 30.11.2013 20:10
quelle
0

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 ... () -

    
carlesls 14.10.2014 09:44
quelle