La mia domanda è a parte le evidenti differenze ereditarie, quali sono le principali differenze tra Fragmente FragmentActivity? A quali scenari si adatta meglio ogni classe? Sto cercando di capire perché entrambe queste classi esistono ...
La mia domanda è a parte le evidenti differenze ereditarie, quali sono le principali differenze tra Fragmente FragmentActivity? A quali scenari si adatta meglio ogni classe? Sto cercando di capire perché entrambe queste classi esistono ...
Risposte:
A Fragmentè una sezione di an Activity, che ha:
Activityè in esecuzione.A Fragmentdeve sempre essere incorporato in un Activity.
Fragmentsnon fanno parte dell'API precedente a HoneyComb (3.0). Se si desidera utilizzare Fragmentsun'app destinata a una versione della piattaforma precedente a HoneyComb, è necessario aggiungere il pacchetto di supporto al progetto e utilizzare il FragmentActivityper conservare il proprio Fragments. La FragmentActivityclasse ha un'API da gestire Fragments, mentre la Activityclasse, prima di HoneyComb, no.
Se il tuo progetto ha come target HoneyComb o solo versioni successive, dovresti utilizzare Activitye non FragmentActivitytenere il tuo Fragments.
Alcuni dettagli:
Utilizzare android.app.Fragmentcon Activity. Utilizzare android.support.v4.app.Fragmentcon FragmentActivity. Non aggiungere il pacchetto di supporto Fragmenta unActivity in quanto genererà un'eccezione.
Una cosa da fare attenzione: FragmentManagere LoaderManageravere versioni di supporto separate per FragmentActivity:
Se si utilizza a Fragmentin Activity(HoneyComb e versioni successive), chiamare
getFragmentManager() ottenere android.app.FragmentManagergetLoaderManager() ottenere android.app.LoaderManagerse stai usando a Fragmentin FragmentActivity(pre-HoneyComb), chiama:
getSupportFragmentManager()per ottenere android.support.v4.app.FragmentManager.getSupportLoaderManager() ottenere android.support.v4.app.LoaderManagerquindi, non farlo
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
o
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
È anche utile sapere che mentre un frammento deve essere incorporato in un frammento Activitynon deve far parte del Activitylayout. Può essere utilizzato come lavoratore invisibile per l'attività, senza un'interfaccia utente propria.
FragmentActivity è la nostra classica attività con supporto dei frammenti, niente di più. Pertanto FragmentActivity è necessario, quando un frammento verrà associato all'attività.
Bene, il frammento è un buon componente che copia i comportamenti di base di Activity, non è ancora un componente di applicazione autonomo come Activity e deve essere collegato ad Activity per funzionare.
Guarda qui per maggiori dettagli
Pensa a FragmentActivity come una normale classe Activity in grado di supportare Fragments. Prima del nido d'ape, una classe di attività non poteva sostituire direttamente i frammenti, quindi è necessario nelle attività che usano i frammenti.
Se la distribuzione target è Honeycomb e oltre, puoi invece estenderti dall'attività.
Anche un frammento deve essere considerato come una "subattività". Non può esistere senza un'attività. Pensa sempre a un frammento come un'attività secondaria e dovresti essere bravo. Quindi l'attività sarebbe il genitore e il frammento (s) il tipo di bambino di relazione simbolica.
a FragmentActivity è un'attività ad hoc che contiene Fragment. In queste poche parole ti ho spiegato uno dei principali cambiamenti importanti che, con Android 3.0 (HoneyComb), il team di Android ha inserito nel sdk di Android.
Con questo nuovo tipo di concetto i tuoi pezzi di codice e layout diventano più flessibili e mantenibili. Se cerchi su google ci sono molti esempi.