Sto imparando i frammenti ma non riesco a capire il significato dietro al perché i frammenti richiedono un contenitore.Scopo del contenitore in frammenti per Android
Il modo comprendo Frammenti lavoro è il seguente:
FragmentActivity setContentView si riferisce ad un file XML che definisce dove sarebbe situato frammenti.
FragmentActivity crea un'istanza dei frammenti
Poi assegna frammento contenitore.
FragmentManager quindi li visualizza.
La classe Fragment effettiva gonfia quindi un layout ed è questo layout che contiene tutti i componenti dell'interfaccia utente dell'applicazione.
(correggimi se mi manca qualcosa qui perché sto imparando solo al momento).
Quindi, perché è lo scopo del contenitore perché ne abbiamo bisogno, poiché in tutti gli esempi che ho visto si tratta solo di un documento xml con layout relativo vuoto.
I diversi frammenti possono condividere lo stesso contenitore (dal momento che è un file xml RelativeLayout)?
Quindi, nell'esempio fornito da Google http://developer.android.com/training/basics/fragments/creating.html
Hanno un ListFragment e quando l'oggetto viene selezionato attraverso l'uso dell'interfaccia CallBack abbiamo finalmente tornare a questa riga di codice:
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
mio altra domanda è:
1) Perché questa riga di codice non sostituisce il ListFragment (Frammento lato sinistro) con il frammento dell'articolo. Da quando è stato inizializzato, vediamo:
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
Invece ... il ListFragment rimane a sinistra e il Frammento di destra viene aggiornato. Ma il contenitore fragment_container appartiene a firstFragment questo è il ListFragment. E questo non è quello che viene aggiornato.
Capisci perché ho una domanda? Questo non è spiegato nel tutorial.
L'affermazione "Quindi è necessario un tipo speciale di attività in grado di gestire il frammento: è FragmentActivity." è vero per le versioni precedenti di Android e quando si utilizzano le librerie di supporto. Nella versione corrente (ad esempio, l'API 19 di Android), l'attività predefinita ha già la funzionalità frammento. Per esempio. la funzione getFragmentManager(): http://developer.android.com/reference/android/app/Activity.html#getFragmentManager() – treesAreEverywhere
Come sostituire un particolare frammento in un contenitore che contiene più frammenti con un nuovo frammento? –
La sostituzione dei frammenti non è la stessa di frammenti diversi che condividono lo stesso contenitore. Due frammenti non possono condividere un contenitore se uno è stato sostituito dall'altro. – craned