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.
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. –
È 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