La mia domanda si distingue dalle ovvie differenze di eredità, quali sono le principali differenze tra Fragment
e FragmentActivity
? A quali scenari si adatta meglio ogni classe? Sto cercando di capire perché entrambe queste classi esistono ...Differenza tra frammento e frammentoAttività
risposta
Un Fragment
è una sezione di un Activity
, che ha:
- suo ciclo di vita
- riceve suoi eventi di input
- possono essere aggiunti o rimossi mentre il
Activity
è in esecuzione.
A Fragment
deve essere sempre incorporato in un Activity
.
Fragments
non fanno parte dell'API prima di HoneyComb (3.0). Se si desidera utilizzare Fragments
in un'app con targeting per una versione di piattaforma precedente a HoneyComb, è necessario aggiungere il Support Package al progetto e utilizzare lo FragmentActivity
per contenere il numero Fragments
. La classe FragmentActivity
ha un'API per trattare con Fragments
, mentre la classe Activity
, precedente a HoneyComb, non lo fa.
Se il progetto ha come target solo HoneyComb o più recente, è necessario utilizzare Activity
e non FragmentActivity
per contenere il numero Fragments
.
Alcuni dettagli:
Utilizzare android.app.Fragment
con Activity
. Utilizzare android.support.v4.app.Fragment
con FragmentActivity
. Non aggiungere il pacchetto di supporto Fragment
a Activity
poiché causerà il lancio di un'eccezione.
Una cosa da stare attenti con: FragmentManager
e LoaderManager
hanno versioni di supporto separate per FragmentActivity:
Se si utilizza un Fragment
in un Activity
(HoneyComb e su), chiamano
getFragmentManager()
per ottenereandroid.app.FragmentManager
getLoaderManager()
per ottenereandroid.app.LoaderManager
se si utilizza un Fragment
in un FragmentActivity
(pre-nido d'ape), chiamare:
getSupportFragmentManager()
per ottenereandroid.support.v4.app.FragmentManager
.getSupportLoaderManager()
per ottenereandroid.support.v4.app.LoaderManager
così, non facciamo
//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 Activity
non deve essere parte del layout Activity
. Può essere usato come un lavoratore invisibile per l'attività, senza alcuna interfaccia utente propria.
FragmentActivity è la nostra attività classica con supporto di frammenti, niente di più. Quindi FragmentActivity è necessario, quando un Frammento sarà collegato all'attività.
Well Fragment è un buon componente che copia i comportamenti di base di Activity, che non è ancora un componente di applicazione autonomo come Activity e deve essere collegato ad Activity per funzionare.
Cercare here per maggiori dettagli
BTW, risposta non aggiornata, che si applica solo alle app che desiderano lavorare su dispositivi precedenti all'API 11. – ToolmakerSteve
@ToolmakerSteve è possibile fornire ulteriori dettagli? Se possibile, puoi modificare la risposta con la versione aggiornata? –
un 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 Android ha inserito nel sdk di Android.
Con questo nuovo tipo di concetto i vostri pezzi di codice e layout diventano più flessibili e manutenibili. Se cerchi su google ci sono molti esempi.
Pensate a FragmentAttività come una normale classe di attività che può supportare Frammenti. Prima di un nido d'ape, una classe di attività non poteva sopprimere direttamente i frammenti, quindi è necessaria nelle attività che utilizzano Frammenti.
Se la distribuzione di destinazione è Honeycomb e oltre, è possibile estendere l'attività invece.
Anche un frammento deve essere considerato come una "sottoattività". Non può esistere senza un'attività. Pensa sempre a un frammento come a un'attività secondaria e dovresti essere bravo. Quindi l'attività sarebbe il genitore e il frammento (s) il tipo di relazione simbolica del bambino.
- 1. Animazione frammento: differenza tra setCustomAnimations e setTransitionStyle
- 2. Differenza tra support.v7.widgets e android.widgets Barra degli strumenti, frammento
- 3. Qual è la differenza tra staccare un frammento e rimuoverlo?
- 4. Qual è la differenza principale tra frammento e attività? Quale codice può essere scritto in frammento?
- 5. Differenza tra setContentView e LayoutInflater
- 6. Differenza tra piega e riduzione?
- 7. La differenza tra $ * e $ @
- 8. Differenza tra $ # e $ {# @}
- 9. Differenza tra. e #
- 10. MySQL: Differenza tra ",", "e"
- 11. Differenza tra "o" e "||"
- 12. Differenza tra unwrapObservable e()
- 13. Differenza tra oggetto e *?
- 14. Differenza tra "**/* /" e "** /"?
- 15. Differenza tra jquery e $
- 16. CMake: differenza tra $ {} e "$ {}"
- 17. Differenza tra ". +" E ". +?"
- 18. VBA: Differenza tra & e +
- 19. Differenza tra numpy.logical_and e &
- 20. Differenza tra | = e^= css
- 21. Differenza tra `% in%` e `` ==
- 22. Differenza tra fragmentTransaction.hide e setVisibility (GONE);
- 23. Qual è la differenza tra un campione, un pixel e un frammento?
- 24. Differenza di base tra il metodo add() e replace() del frammento
- 25. Differenza tra Dizionario e Hashtable
- 26. Differenza tra SCM e SVN
- 27. differenza tra RDLC e SSRS
- 28. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 29. Differenza tra "\ n" e Environment.NewLine
- 30. Differenza tra QSharedPointer e QSharedDataPointer?
Tuttavia, non è necessario che un frammento faccia parte del layout dell'attività; puoi anche usare un frammento senza la sua interfaccia utente come lavoratore invisibile per l'attività. – uzay95
@ uzay95 grazie per averlo indicato. Ho aggiunto una sezione alla fine per parlarne. –
@GunnarKarlsson Aggiungiamo il frammento a fragmentActivity? – Dhasneem