Anpassen der Modellansicht des Moderatormusters an Android mit Fragment-Registerkarten

9

Ich arbeite an der Portierung einer Anwendung von Windows Mobile auf Android und ich habe ein kleines Problem festgestellt. Die vorhandene Anwendung verwendet das MVP-Muster und hat verschiedene "Presenter" -Klassen, die im Port wiederverwendet werden sollen (es ist eine ziemlich umfangreiche Anwendung und das Neuschreiben ist einfach nicht möglich, und der C # -Code wird alle wiederverwendet, wobei Mono für Android verwendet wird) ). Diese nehmen eine Ansicht in Anspruch, die eine Schnittstelle implementiert, die ich in android durch das Erstellen von Aktivitäten, die die entsprechende Schnittstelle implementieren, erstellt, einen Präsentator instanziiert und sich selbst als Argument übergeben. Dies alles scheint für unsere Zwecke gut zu funktionieren, oder war bis Eiscremesandwich herauskam und ich versuchte es mit Fragmenten zu implementieren.

Einige der Aktivitäten verwenden Tabs, und um die Aktionsleiste und einige der anderen neuen Features zu verwenden, versuche ich, die Tabbed-Aktivitäten in Tabbed-Fragmente mit einem Viewpager umzuwandeln, und hier treffe ich einige Probleme. Von dem, was ich gelesen habe, scheint die Implementierung jeder Registerkarte als ein Fragment die bevorzugte Methode zu sein, aber ich bin verwirrt darüber, wie genau ich dem Moderator erlauben kann, mit dem Fragment durch die Aktivität zu kommunizieren. Im Moment ruft der Präsentator die Interface-Methoden der Aktivität auf, die dann direkt auf Spinner, Textviews usw. zugreifen, um Werte zu erhalten und zu setzen. Da jedes dieser ui-Elemente in der Aktivität deklariert wird, ist dies trivial. Wenn ich alle diese ui-Elemente in Fragmente verschiebe, scheint es jedoch nicht so zu sein, dass ich auf sie zugreifen kann, ohne eine ganze Reihe neuer Schnittstellen zwischen jeder Aktivität und jedem Fragment zu implementieren. Ich habe versucht, eine Referenz in der Aktivität auf ui-Elemente in den Fragmenten zu erzeugen (indem ich die Fragment-Stammansicht erhalte und dann die gewünschte Ansicht finde), aber der viewpager lädt nicht immer die Fragmente, so dass dies nicht funktioniert. und selbst wenn es geladen wurde, wird das Layout nicht aufgebläht, bis sich die Aktivität im laufenden Zustand befindet, so dass ich immer Nullwerte zurückgeliefert bekomme.

Ich weiß, dass es eine seltsame Frage ist, aber wie kann ich meinen Vortragenden erlauben, mit den ui-Elementen zu interagieren, die jetzt in separaten Fragmentregistern gespeichert sind? Ich habe das Gefühl, dass ich auf völlig falsche Weise vorgehen muss, aber ich kann einfach nicht sehen, wie es gemacht werden sollte. Wenn also jemand einen Rat geben könnte, wie ich das machen könnte, wäre das großartig.

    
user1193719 03.07.2012, 02:11
quelle

1 Antwort

1

Wie wäre es, wenn Sie für alle Fragmente in Ihrer FragmentActivity einen einzigen Präsentator erstellen und dann diesen einzelnen Moderator für jedes Fragment (alias Tab) eine Schnittstelle implementieren lassen? Instanziieren Sie dann diesen Präsentator von Ihrer Instanz von FragmentActivity, von der der Präsentator einen Verweis auf alle Fragmente erhält.

    
Vering 16.08.2013 08:39
quelle