2011-09-30 14 views
7

Secondo alcuni della documentazione, posso utilizzare un programma di caricamento in un'attività o in un frammento ma il pacchetto di compatibilità mostra che solo un FragmentActivity ha il metodo getLoaderManager().Devo usare Frammenti per ottenere un LoaderManager?

Poiché il vecchio cursore gestito è stato deprecato, è necessario utilizzare il caricatore del cursore. Quindi, perché questa funzione di gestione dei dati dovrebbe essere legata a una scelta di widget dell'interfaccia utente? Non ha senso per me.

grazie P.

risposta

6

Dal momento che il vecchio puntatore gestito è stato deprecato dobbiamo usare il cursore Loader.

No, i cursori gestiti funzionano ancora. Di solito, "deprecato" in Android significa "supporteremo questo meccanismo finché potremo, ma pensiamo che ci siano opzioni migliori".

Quindi perché questa funzione di gestione dei dati dovrebbe essere collegata a una scelta di widget dell'interfaccia utente?

Non lo è. Non è necessario utilizzare i frammenti per ereditare da FragmentActivity. Siete inoltre invitati a creare il vostro numero LoaderManagerCapableActivity, in cui clonate i relativi dati membri e metodi da FragmentActivity (il codice sorgente è sul vostro disco fisso). Tuttavia, LoaderManagerha associato a un'attività, perché è legato al ciclo di vita dell'attività, così come i cursori gestiti. Ad esempio, le istanze LoaderManager vengono passate tra le attività tramite onRetainNonConfigurationInstance().

1

Sì, per ricevere caricatoreManager è necessario associarlo a un'attività, tuttavia è possibile utilizzare i caricatori senza la necessità di caricatore.

1) Implementare AsynTaskLoader.
2) Istanzia il Loader implementato nella classe.
3) Registrare un listener per il proprio caricatore in modo da ottenere la richiamata una volta completato il caricamento.
4) Chiamare il metodo startLoading del caricatore.
5) Al termine del caricamento verrà chiamato il metodo di richiamata in cui è possibile utilizzare i dati caricati per qualsiasi scopo.