2013-03-10 20 views
77

Sono nuovo in Android. Voglio creare un'app con il formato scheda. Ho trovato molti documenti in cui è stato utilizzato Activity. Anche in molti casi hanno utilizzato FragmentActivity. Non sono sicuro di quale sarà il migliore inizio. Si prega di suggerire me dovrei usare Activity o FragmentActivity per avviare lo sviluppo in formato di scheda?Android - Activity vs FragmentActivity?

risposta

108

ianhanniballake ha ragione. È possibile ottenere tutte le funzionalità di Activity da FragmentActivity. Infatti, FragmentActivity has more functionality).

Utilizzando FragmentActivity è possibile creare facilmente il formato tab and swap. Per ogni scheda è possibile utilizzare diversi Fragment (Fragments sono riutilizzabili). Quindi per qualsiasi FragmentActivity è possibile riutilizzare lo stesso Fragment.

È ancora possibile utilizzare Activity per singole pagine come elencare qualcosa e modificare l'elemento dell'elenco nella pagina successiva.

Ricordarsi inoltre di utilizzare Activity se si utilizza android.app.Fragment; utilizzare FragmentActivity se si utilizza android.support.v4.app.Fragment. Non collegare mai uno android.support.v4.app.Fragment a un android.app.Activity, poiché ciò causerebbe il lancio di un'eccezione.

+0

FYI, ho trovato alcune buone discussioni su Fragment Android in un'altra lingua qui [Framment trong Android] (http://www.umbalaaz.com/threads/cach-su-dung-fragment-trong-android.336 /) – UmbalaAZ

+0

MA vedere la risposta di @ ianhanniballake: * a meno che l'API di destinazione sia più vecchia dell'API 11 *, è possibile utilizzare "Attività" invece di "FragmentActivity" e avere ancora accesso a Fragments; * questa * risposta non lo dice (anche se l'ultimo paragrafo lo sottintende). – ToolmakerSteve

+0

Come sappiamo, per lo più abbiamo una BaseActivity nel nostro progetto, e tutte le altre attività la estenderanno. Ma quando arriva a FragmentActivity, non possiamo farlo. Quindi non uso FragmentActivity anche nel caso di tab. –

3

Se si utilizza la procedura guidata "Nuovo progetto Android" di Eclipse in un pacchetto ADT recente, verranno automaticamente implementate le schede come frammenti. In questo modo la conversione della tua applicazione nel formato tablet sarà molto più facile in futuro.

Per semplici layout a schermo singolo è ancora possibile utilizzare Activity.

51

FragmentActivity ti dà tutte le funzionalità del Activity oltre alla possibilità di utilizzare Fragments che sono molto utili in molti casi, in particolare quando si lavora con la ActionBar, che è il modo migliore per utilizzare schede in Android.

Se siete solo mira a nido d'ape (V11) o superiore dispositivi, quindi è possibile utilizzare Activity e utilizzare i Frammenti native introdotte in v11 senza alcun problema. FragmentActivity è stato creato appositamente come parte dello Support Library per eseguire il porting di alcune di quelle funzioni utili (come Frammenti) ai dispositivi precedenti.

Devo anche notare che probabilmente il training Backward Compatibility - Implementing Tabs sarà molto utile in futuro.

+3

@ A - C - Ho modificato la mia risposta - è corretto che i dispositivi API 11+ possano utilizzare frammenti nativi e la normale classe di attività. – ianhanniballake

+0

Ho intenzione di contestare l'affermazione che la normale classe di attività può essere utilizzata come frammento in API11 +. Questo sembra essere cambiato in KitKat. Vedi https://android.googlesource.com/platform/frameworks/base.git/+/kitkat-mr1-release/core/java/android/app/Fragment.java#584 – cmarcelk

+1

@cmarcelk - non so quale sia il normale La classe di attività può essere usata come frammento 'significa - ho detto che 'android.app.Activity' funziona con' android.app.Fragment', non qualcosa su di loro che sia intercambiabile. – ianhanniballake

Problemi correlati