Quando si utilizza Fragments
, si può pensare a loro come il View
e la Activity
come il Controller
. A mio parere personale, Fragments è stata la reazione istintiva di Google a supportare i tablet, e ora li abbiamo bloccati :(
Io uso frammenti ogni giorno, e sicuramente sento il tuo dolore. Quando ho letto su di loro ho pensato a me stesso , "questo è davvero cool", ma dopo il loro utilizzo, sono a corto di così tanti modi, ma soprattutto perché io li userei :(in modo non corretto
Ecco alcune delle insidie che ho incontrato ...
Non utilizzare onclick
nel layout del frammento, poiché è il Activity
e NON lo Fragment
che gestirà il clic. Se si utilizza l'attributo e in seguito si utilizza il frammento in un altro Activity
, sarà quindi necessario ricordare di aggiungere il metodo onclick
a quello Activity
. Quindi, utilizzare un findViewById
e quindi collegare manualmente il gestore di clic nel frammento onCreateView
.
Quando si comunica con altri frammenti, utilizzare Activity
come controller per dirigere il messaggio. (Un sacco di esempi su come farlo usando le interfacce). La chiave qui è che se si stanno eseguendo più frammenti su un dispositivo in cui un frammento comunicherà direttamente con un altro frammento, si verificherà un comportamento strano, ma prevedibile. Ad esempio se il frammento A ha aggiornato direttamente una vista nel frammento B, ma il frammento B non è visibile (perché lo hai sostituito - considera un telefono), quindi quando Frammento B è visibile, allora lo View
potrebbe non essere aggiornato, dal momento che il frammento View
viene ricreato. Quindi, se aggiorni un Fragment
assicurati di aggiornare i dati in un frammento, aggiorna le porzioni View
nello onCreateView
che viene chiamato quando il frammento diventa di nuovo visibile (cioè, hai scoccato il frammento corrente, ora stai mostrando il precedente uno)
Non creare un'applicazione completa utilizzando solo frammenti. Costruisci invece app come faresti normalmente, usando Attività e poi tratti la Fragment
con una vista glorificata (che è). Ad esempio, progettare l'app in modo tale da avere più frammenti e più attività e alcune attività potrebbero utilizzare più di un frammento.
Il mio primo pensiero con frammenti è stato un anno in cui ho pensato che sarebbe grande per costruire solo un'applicazione completa utilizzando frammenti e un'attività ... alla fine ho finito l'App, ma mi sono imbattuto in così tanti problemi che utilizzano tale approccio. Il mio prossimo approccio è stato quello di utilizzare più frammenti e più attività ed è andata molto meglio.
Linea di fondo è che i frammenti sono grandi se li si utilizza come un View
, ma se si inizia cercando di utilizzare loro come Attività, allora si sta per incorrere in problemi :(Pensate al Activiy
->Fragment
come l'essere il Controller
->View
.
vi consiglio anche di leggere e capire il Frammento del ciclo di vita, oltre alla attività del ciclo di vita (Pro Android 4 ha un grande quadro per rappresentare) e potrai risparmiare ore di dolore :)
I don' Ho abbastanza esperienza per rispondere, ma il mio primo passaggio ai frammenti mi ha fatto dubitare del loro uso nelle app non-tablet. Sicuramente un aumento della complessità per un modesto miglioramento nello sviluppo dell'interfaccia utente. – tcarvin