2013-08-20 11 views
10

Utilizzo ViewPager che contiene 3 frammenti, ogni frammento carica un elenco. Il problema è quando l'applicazione viene eseguita per la prima volta e faccio scorrere il dito verso il frammento successivo, questo frammento ha bisogno di un momento per caricare (circa 2 secondi) prima che la sua vista sia visibile. Questo è un comportamento molto strano. Tutto ciò che voglio è una volta che l'app è iniziata, tutti i frammenti di ViewPager dovrebbero essere pronti per l'utente, quindi quando passano i frammenti, non c'è tempo di attesa. Come lo posso fare?Visualizzazione del frammento di precarico in ViewPager al primo avvio

+0

Stai usando FragmentPageAdapter o FragmentStatePageAdapter? – Delyan

+0

Quello che si potrebbe pensare di fare è memorizzare nella cache gli adattatori della lista dei frammenti nell'attività (o nel cercapersone). Ciò impedirà il ricaricamento degli adattatori su ogni cambio di pagina. – AedonEtLIRA

+0

@Delyan Io uso FragmentPagerAdapter –

risposta

28

Basta chiamare setOffscreenPageLimit() in onCreate() (dopo aver inizializzato ViewPager). OffscreenPageLimit imposta il numero di pagine che devono essere conservate su entrambi i lati della pagina corrente (nel tuo caso 2). Con questo tutti i tuoi frammenti saranno istantanei.

(Un altro (altamente consigliato) possibilità è quella di aumentare le prestazioni delle vostre liste o listadapters, perché un tempo di caricamento di 2 secondi non suona bene)

+0

In realtà impostarlo su '2' assicurerebbe già che tutti e 3 i frammenti siano tenuti in giro. Il valore imposta il numero di pagine da conservare su ** entrambi i lati della pagina corrente **, non sul numero totale di pagine. –

+0

Sì, lo so. Ma puoi anche impostare il limite a '100' e funziona ancora ;-) Questo era solo un esempio, ovviamente lui può impostare il limite a' 2' se vuole. – Namenlos

+1

Beh, in tal caso, perché dire * "nel tuo caso ** 3 **" * nella tua risposta? Non è corretto, e mi segnala che non lo sapevi, ed è per questo che in origine ho aggiunto un commento per farlo notare. –

Problemi correlati