Android.app Fragments vs. android.support.v4.app utilizzando ViewPager?


182

Ho una domanda riguardante le librerie di supporto Android, i frammenti e, come esempio specifico, la ViewPagerclasse. La mia intenzione è quella di creare un'app con funzionalità simili all'esempio fornito sul sito Web per sviluppatori Android ( http://developer.android.com/training/animation/screen-slide.html o http://developer.android.com/ formazione / implementazione-navigazione / laterale.html ). Esaminando il loro codice, ho notato che utilizzano la android.support.v4.applibreria, che dalla mia ricerca è l'unico modo per accedere alla ViewPagerclasse.

Nella mia situazione, non ho interesse per la retrocompatibilità. Il livello minimo di API è 14 (Ice Cream Sandwich) e l'obiettivo di costruzione è 4.2 Jelly Bean. Nella sua forma più semplice, la mia app si comporta esattamente come la seconda demo che ho collegato sul sito Web degli sviluppatori Android, scorrendo semplicemente tra tre schede con contenuti in ciascuna.

Tutti gli articoli / post / risposte che ho letto sembrano favorire fortemente la libreria di supporto v4 . Ora per le mie domande, anche se lunghe:

  1. Qual è il modo migliore per strutturare la mia applicazione - utilizzando android.support.v4.appe quindi utilizzando SupportFragments o utilizzare i frammenti forniti in android.app- e perché?

  2. Se i frammenti android.appsono la strada da percorrere, qual è il modo ottimale per avvicinarsi ViewPagers?

  3. Se SupportFragments è il più adatto all'attività, stimerei che possiedano la stessa funzionalità dell'altro - quindi qual è lo scopo di averli all'interno android.app?

Spero che qualcuno con una comprensione più chiara possa darmi un po 'di chiarimenti perché sono sbalordito ...


1
non è possibile utilizzare Fragmentsse si sta utilizzando ViewPagerè necessario utilizzare la libreria di supportoSupportFragment
tyczj

1
SupportFragmentnon è un corso nell'SDK di Android ...
Karakuri,

2
@Karakuri Ci scusiamo per la confusione; Non intendo una classe letterale SupportFragment, mi riferisco semplicemente alla Fragmentclasse disponibile in android.support.v4.app.
jonstaff,

@jonstaff in entrambi i casi è possibile utilizzare solo la classe di frammenti nella libreria di supporto
tyczj

@tyczj Grazie, ma in realtà non risponde alla domanda. Sto cercando di più per un motivo , dal momento che so già non v'è ViewPagerin android.app.
jonstaff,

Risposte:


183

È possibile utilizzare ViewPagercon frammenti nativi dal android.apppacchetto con gli adattatori dal pacchetto android.support.v13.app . Per questo devi usare il vaso di supporto v13.

Esistono due versioni degli adattatori che funzionano ViewPager, quelle nel v4pacchetto sono pensate per essere utilizzate con frammenti di supporto, quelle v13con frammenti nativi.

Il motivo per cui ora ci sono due implementazioni di frammenti è storico: i frammenti nel android.apppacchetto sono stati introdotti con Android 3 solo per tablet e la libreria di supporto è stata creata per portare frammenti su telefoni con versioni precedenti. Su Android 4 hai entrambi.

Per esperienza personale, consiglierei di utilizzare i frammenti di supporto, anche durante lo sviluppo per Android 4. Ecco alcuni motivi: Frammento o Frammento di supporto?


3
Grazie per questo! So di essere in ritardo alla festa, ma questa risposta mi ha aiutato molto.
Kyle,

support.v13 funziona per ViewPager ... fino a quando non si tenta di utilizzare ViewPager in un DialogFragment :-(
SteelBytes

android.appnon è FragmentPagerAdaptercosì quindi diventa impossibile utilizzare viewpager con android.app.Fragment? qualche idea qui? c'è qualche opzione per il vecchio cercapersone vista? In modo da agganciare dinamicamente il frammento per determinate schede
Nikhil,

@Nikhil ci sono due versioni di FragmentPagerAdapter. L'uno nel android.support.v4.apppacchetto funziona con frammenti di supporto, l'altro android.support.v13.appcon frammenti "normali"
brillenheini,

Speravo di usare la v13 in modo da poter evitare di usare la v4. Si scopre che v4 è una dipendenza per v13, quindi potrei anche usare i frammenti di supporto / visualizzare il cercapersone.
Vas

3

android.app.Fragmentla classe è obsoleta da Android P ( link ), quindi android.support.v4.app.Fragmentdovrebbe essere utilizzata solo ovunque.


1

Se hai intenzione di scegliere come target API 11+, non avrai bisogno della libreria di supporto [e il tuo apk effettivo sarà almeno più piccolo).

Se vuoi supportare qualcosa prima di Android 3.x, avrai bisogno della libreria di supporto.

È questo che stai chiedendo?


9
è necessario utilizzare la libreria di supporto per utilizzare ViewPager, che è quello di cui si sta chiedendo
tyczj

@Matt Grazie per la tua risposta, ma sto cercando la migliore soluzione che incorpora ViewPagerfunzionalità e una spiegazione del perché quella soluzione sia la migliore.
jonstaff,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.