Sto provando a utilizzare il nuovo Cassetto di navigazione . Ho seguito le linee guida e sono riuscito a farlo funzionare con i nomi delle sezioni che cambiano titolo sull'elemento selezionato e così via. Ora sono bloccato perché non ho idea di come archiviare ciò che voglio fare dopo.modifica layout o attività del frammento (?) Utilizzando un cassetto di navigazione
Quando clicco su un elemento nel cassetto - casa, ad esempio -Voglio a me portare a una schermata in cui ho tutta la roba che ho creato in un particolare layout per la schermata specifica. Sono tutte cose statiche come TextViews
e immagini, quindi non devo fare nulla con loro.
Devo creare un activity
e un layout per ogni articolo sullo ListView
del cassetto e (non so ancora) avviare l'attività in onItemSelected()
? O posso fare qualcosa di simile a creare un frammento al volo ogni volta che si fa clic su un elemento nella ListView
e dire qualcosa come
if(homeClicked){ //use home.xml as layout }
if(contactClicked){ //use contact.xml as layout }
EDIT
Come test ho messo in onItemClick()
un metodo che passava nella posizione dell'array cliccato. Come test ho appena usato come:
if(position==2) { // this is "contact" in the list layout
setContentView(R.layout.contacts);
}
Funziona, ma ovviamente perdo il cassetto come la roba layout di contatti non è annidato nel DrawerLayout
. Esiste un modo più elegante per raggiungere il mio obiettivo invece di utilizzare un setContentView()
utilizzando setContentView()
, modificando qualsiasi layout da nidificare in un DrawerLayout
? (Io non so nemmeno se è possibile - probabilmente non è, in quanto vi sono uguali ID)
@Stefan editate questo come non c'è abbastanza spazio nel commento risposta
Grazie Stefan, l'esempio di Google è la cosa che mi rende più confuso. Sono sicuro che ci sia una piccola particella sui frammenti che probabilmente ho letto 10k volte ma il mio cervello si rifiuta di assimilare. Per quanto ho capito, nell'esempio di Google quando fai clic su un elemento nel cassetto, crea un nuovo frammento e fa sì che questo frammento sostituisca l'unica cosa che c'è oltre al ListView
del cassetto nel layout xml dello MainActivity
, che è un FrameLayout
che occupa tutto lo spazio dello schermo. Quindi tutti i frammenti fanno visualizzare un pianeta ImageView
così il codice dice al frammento di cambiare quell'immagine in base alla posizione dell'array ListView
dell'elemento click.
im nuovo per il sito quindi non so se la modifica di un commento ti informa in qualche modo, btw post principale modificato come spazio commento non è sufficiente – kandros
L'esempio di google ri-utilizza lo stesso frammento con un argomento diverso per cambiare un imageView, ma allo stesso modo puoi semplicemente creare un'istruzione switch e fare in modo che il Frammento si sostituisca con un Frammento completamente nuovo che ha le sue viste e la sua logica. –