2012-07-03 13 views
9

Sto lavorando sul porting di un'applicazione da Windows Mobile per Android e ho incontrato un po 'un problema. L'applicazione esistente utilizza il modello MVP e ha distinti "presentatore" classi, che devono essere riutilizzata nel porto (è piuttosto una vasta applicazione e riscrittura semplicemente non è possibile, e il codice C# è tutto riutilizzata usando mono per android). Questi prendono in considerazione l'implementazione di un'interfaccia, che in Android ho ottenuto creando attività che implementano l'interfaccia appropriata, creando istanze di un presentatore e passandole come argomento. Tutto questo sembra funzionare bene per i nostri scopi, o è stato fino a quando non è uscito il sandwich di gelato e ho cercato di implementarlo usando frammenti.Adattamento Model View Presenter pattern per Android con Frammento Tabs

Parecchie attività utilizzano schede e, per utilizzare la barra delle azioni e alcune altre nuove funzionalità, sto cercando di convertire le attività a schede in frammenti a schede con un viewpager, ed è qui che mi trovo a colpire alcuni problemi. Da quello che ho letto implementando ogni scheda come un frammento sembra essere il metodo preferito, ma sono confuso su come esattamente posso permettere al relatore di comunicare con il frammento attraverso l'attività. Al momento il presentatore chiama metodi di interfaccia della attività che poi accedono direttamente filatori, textviews ecc per ottenere e impostare valori required.As ciascuno di questi elementi dell'interfaccia utente sono dichiarati nell'attività questo è banale. Se trasferisco tutti questi elementi dell'interfaccia utente in frammenti, tuttavia, non sembra che io possa accedervi senza implementare un'intera nuova serie di interfacce tra ogni attività e ogni frammento. Ho provato generare un riferimento nell'attività a elementi dell'interfaccia utente nei frammenti (ottenendo la vista radice frammento e poi trovare la vista voglio dentro che), tuttavia la viewpager non sempre caricare i frammenti in modo da questo non funzionerà, e anche quando è stato caricato, il layout non viene gonfiato fino a quando l'attività non è in esecuzione, quindi ottengo sempre i valori nulli restituiti.

So che è una domanda un po 'strana, ma come posso consentire alle mie classi di relatore di interagire con gli elementi dell'interfaccia utente ora archiviati in schede di frammenti separate? Mi sento come se dovessi andare su di esso in modo completamente sbagliato ma non riesco a vedere come dovrebbe essere fatto, quindi se qualcuno potesse offrire qualche consiglio su come potrei fare sarebbe fantastico.

+0

Avendo lo stesso dilemma, utilizzando MVP con oggetti personalizzati in RecyclerView e ViewPager è il dolore nel @ ss a lavorare con –

risposta

1

ne dite di creare un unico presentatore per tutti i frammenti della tua FragmentAcivity e poi lasciare che questo singolo presentatore implementare un'interfaccia per ogni frammento (aka Tab). Quindi istanzia questo presentatore dalla tua istanza di FragmentActivity da cui il relatore avrà un riferimento a tutti i Frammenti.

Problemi correlati