2014-05-13 18 views
15

sto usando la getChildFragmentManager() in un'applicazione che sta compilando contro API di livello 19, con l'insieme minimo SDK 14.getChildFragmentManager() e supporto librerie

getChildFragmentManager() è stato introdotto nel API 17, quindi i dispositivi esecuzione a livelli API 14, 15 o 16 generano un valore NoSuchMethodError quando viene chiamato il metodo.

Ho esaminato tutte le altre domande StackOverflow relative a questo problema, ma nessuno di loro sembra rispondere a questa domanda: esiste un modo per utilizzare il metodo getChildFragmentManager() per i dispositivi pre-API livello 17? Se é cosi, come?

Il metodo non sembra essere incluso nelle librerie di supporto v4 o v13. Ho provato le build pulite con entrambe le librerie di supporto v4 e v13, ma non sembra che risolva il problema.

risposta

17

c'è un modo per far sì che il metodo getChildFragmentManager() funzioni sui dispositivi pre-API di livello 17? Se é cosi, come?

Utilizzare il backport di frammenti dal pacchetto di supporto Android (android-support-v4.jar, android.support.v4.app.Fragment).

Il metodo non sembra essere incluso nelle librerie di supporto v4 o v13.

Sì, è, sul FragmentActivity, la classe Activity di base è necessario utilizzare al fine di utilizzare i frammenti backport.

E 'nella classe Fragment dal backport, per la gestione dei frammenti figlio di quel frammento.

Ho provato le versioni pulite con entrambe le librerie di supporto v4 e v13, ma non sembra che risolva il problema.

O si non cambiava a FragmentActivity il Fragment backport, o il vostro supporto alle librerie JAR sono vecchi. Here is a sample project dimostrando l'uso di FragmentActivity il backport Fragment e il suo getChildFragmentManager().

+10

[ 'getChildFragmentManager()'] (https://developer.android.com/reference/android/support/v4/app/Fragment.html#getChildFragmentManager()) è su 'Fragment', non' FragmentActivity' –

+1

@MarkCarter: Buona cattura - Ho modificato la risposta. Grazie! – CommonsWare

0

Si potrebbe provare il SupportFragmentManager invece:

yourFragment = (YourFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.playListFragment) 
Problemi correlati