2012-04-04 12 views
7

Attualmente sto definendo una varietà di Frammenti nel file di risorse e li nascondo nel metodo onCreate di Activity contenente, ma non sono soddisfatto di questo approccio poiché mi aspetto che questa sia una delle caratteristiche che ogni frammento definirebbe per se stesso.è possibile avviare un frammento nascosto definendone lo stato nell'XML?

Sono oggettivamente troppo frammentario o mi manca la tecnica?

grazie, R

risposta

4

Non sono soddisfatto con questo approccio come avrei aspetto che questo sia una delle caratteristiche che ogni frammento sarebbe definire per sé.

Non sono d'accordo con tale valutazione.

I frammenti sono responsabili di una piccola sezione dello schermo e di tutti gli eventi che sono puramente contenuti all'interno di quella piccola sezione dello schermo.

Se il frammento è ospitato, l'attività A o l'attività B o l'attività C, se è accanto ad altri frammenti o meno, se è attualmente visibile o meno, e così via, non è la responsabilità del frammento. Tale responsabilità è legata all'attività di hosting (o attività, se il frammento viene riutilizzato). L'attività di hosting conosce le dimensioni dello schermo e cosa dovrebbe essere fatto in termini di caricamento di particolari frammenti sullo schermo.

Dopo tutto, le regole possono cambiare. Forse il frammento è nascosto su schermi piccoli/normali ma visibile su schermi grandi/grandi. O, forse il frammento è stato inizialmente utilizzato singolarmente, ma successivamente viene caricato in un ViewPager. Oppure, forse il frammento viene creato dinamicamente come parte di un FragmentTransaction e aggiunto allo stack BACK, in modo che l'utente possa eliminare autonomamente il frammento. IMHO, il frammento non dovrebbe conoscere né preoccuparsi di nessuna di queste cose, poiché trascende tutti i confini di quell'unico frammento.

+0

Grazie Mark, devo ripensare al mio approccio ai frammenti. Penso che li sto usando in modo troppo statico. I documenti suggeriscono di pensare nel paradigma del Web che forse non sono. –

+0

È possibile avviare un frammento nascosto nascondendolo attraverso il codice java e non xml? Sto attualmente inserendo il codice nascosto nel onStart() del frammento da nascondere. Ma è ancora visibile. – Namratha

Problemi correlati