2011-07-19 15 views
7

Ho provato a utilizzare DialogFragment su dispositivi 3.0, che non supporta Fragment o DialogFragment per livello SDK.Come posso visualizzare un DialogFragment utilizzando il pacchetto di compatibilità?

Così, ho deciso di utilizzare la libreria di compatibilità Android, che supporta Fragment.
Quindi ho creato una classe DialogFragment che estende android.support.v4.app.DialogFragment.

Ma ..... Quando ho provato a mostrare il mio DialogFragment utilizzando DialogFragment.show(), ho avvertito che spettacolo (FragmentManager, String) accetta come primo argomento android.app.FragmentManager, non android.support .v4.app.FragmentManager.

Penso che android.app.FragmentManager non possa essere utilizzato nei dispositivi Android 3.0, perché non è incluso nell'SDK.

C'è un modo per mostrare DialogFragment con la libreria di compatibilità? Devo usare un altro modo per mostrare My DialogFragment con la libreria di compatibilità?

Qualsiasi aiuto sarà molto apprezzato. :)

risposta

15

Il pacchetto di compatibilità è per coloro che si sviluppano su versioni Android precedenti alla 3.0.

Sia il FragmentManager ei DialogFragment classi esistono nel livello di API 11 (3.0)

In ogni frammento o di attività si dovrebbe essere in grado di eseguire le seguenti operazioni per visualizzare una piccola finestra di dialogo (vuoto) al centro dello schermo :

DialogFragment df = new DialogFragment(); 
df.show(getSupportFragmentManager(), "MyDF"); 
+5

Sostituire getFragmentManager con getSupportFragmentManager(). – Tom

10

FragmentManager e DialogFragment esiste nella lib compat per sdk versione 4 e verso l'alto, assicurarsi di importare quelle.

Utente getSupportFragmentManager() per ottenere il tuo FragmentManager per la compat lib.

Mostra finestra di dialogo come descritto nella documentazione DialogFragment che trasmette la versione compat lib di `FragmentManager '.

Nota che si può anche trattare il DialogFragment come Fragment e 'show' utilizzando add(...) o replace(...) come parte di una transazione, vale a dire non si è limitato al solo utilizzando show(...)

+1

Quale sarebbe la differenza tra add() e show()? – David

Problemi correlati