2012-11-26 5 views
5

Il mio obiettivo: Voglio usare frammenti accanto al mio gioco libgdx su Android.Come rendere la classe AndroidApplication di LibGDX il supporto di Android Fragments?

Ecco il problema. Per un'attività che ospita il gioco libgdx, è necessario estendere la classe AndroidApplication.

public class MyGameActivity extends AndroidApplication {} 

Mentre AndroidApplication è anche un'estensione della Classe di attività

public class AndroidApplication extends Activity ... {} 

voglio usare frammenti sull'attività, e questo è dove il problema viene. Ho anche bisogno di fare MyGameActivity estendere FragmentActivity in questo modo per sostenere frammenti

public class MyGameActivity extends FragmentActivity {} 

Ma il gioco non funziona se non si estende AndroidApplication. Come ovviare a questo problema?

Se solo posso fare questo ...

public class MyGameActivity extends AndroidApplication, FragmentActivity {} 

sto usando le librerie di supporto per rendere l'applicazione compatibile.

risposta

1

Non è possibile eseguire l'ereditarietà multipla in Java e anche se fosse possibile, come funzionerebbe?

Che cosa si può fare è copiare il codice https://github.com/libgdx/libgdx/blob/master/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidApplication.java

nella classe ereditata da FragmentActivity

public class MyAndroidApplication estende FragmentActivity implementa Applicazione

E nel luogo in cui si crea un'istanza AndroidApplication è necessario creare un'istanza MyAndroidApplication .

+0

Immagino che per ora ciò sia necessario. Sebbene ci siano altre classi che richiedono una classe AndroidApplication come la classe AndroidInput e AndroidAudio, MyAndroidApplication non funzionerà con esse. – ains

+0

Questo è vero. Probabilmente hai bisogno di creare anche MyAndroidInput e MyAndroidAudio. Fortunatamente LibGdx è open source. In generale, direi che questa parte potrebbe essere migliorata. Prenderò in considerazione la possibilità di risolverlo entro un paio di settimane. –

2

AGGIORNAMENTO: LibGdx ora supporta frammenti Android, utilizza AndroidFragmentApplication. Vedi documentation

Problemi correlati