20

Sto tentando di implementare un ViewPager con un FragmentPagerAdapter, in cui il ViewPager stesso si trova all'interno di un frammento. Ho letto nei documenti che dovrebbe essere possibile con la libreria di supporto più recente e utilizzando frammenti annidati. Principalmente vorrei che il PagerAdapter usasse il gestore del frammento figlio del frammento di root.NoSuchMethodError getChildFragmentManager()

Quindi, il mio progetto utilizza ActionBarSherlock e SherlockFragments. Poiché la lib di supporto in bundle con ActionBarSherlock non includeva affatto il metodo getChildFragmentManager(), ho scaricato la libreria di supporto più recente v4 e l'ho inserita nella cartella libs di ActionBarSherlock e anche nel mio progetto. Con questa modifica il progetto viene compilato correttamente, ma al primo avvio viene chiuso con NoSuchMethodError riguardante getChildFragmentManager(). Cosa sto facendo di sbagliato qui?

(P.S. sto testando con Android 2.2, che è la mia piattaforma minima mirato.)

Grazie!

RISOLTO: Ho sostituito la libreria di supporto nel mio progetto e in tutte le librerie di riferimento con la versione più recente. Poi ho pulito il mio progetto, ma ho dimenticato di pulire e ricostruire anche le librerie di riferimento ... Questo ha portato a questo comportamento particolare.

+0

Sei davvero sicuro di avere l'ultimo pacchetto di compatibilità (dall'ultimo aggiornamento SDK)? – Luksprog

+1

Ciao! Sì, è la versione 11 della libreria di supporto. – Peter

risposta

0

RISOLTO: Ho sostituito la libreria di supporto nel mio progetto e in tutte le librerie di riferimento con la versione più recente. Poi ho pulito il mio progetto, ma ho dimenticato di pulire e ricostruire anche le librerie di riferimento ... Questo ha portato a questo comportamento particolare.

4

Assicurarsi che nessuna delle librerie di riferimento utilizzi Libreria di supporto v13. Se si esegue solo la libreria v13 verrà utilizzato in tutti i progetti facendo riferimento a quello che utilizza v13 e questo sembra interferire con il metodo getChildFragmentManager(). Vedere THIS QUESTION per maggiori informazioni e prestare attenzione alla stampa della console quando si esegue un Progetto-> Pulisci sull'intero spazio di lavoro (supponendo che si stia utilizzando Eclipse).

Ho avuto lo stesso problema di te ma è stato risolto una volta rimossa la libreria v13 da una delle cinque librerie a cui si fa riferimento.

+0

Ciao! Grazie per il tuo suggerimento! Tuttavia, sto utilizzando SOLO il pacchetto di supporto v4 nel mio progetto e nelle librerie di riferimento. Ad ogni modo il tuo suggerimento mi ha dato un indizio per risolvere finalmente il problema, molte grazie per questo! – Peter

+0

@Peter Cool. =) Qual era il problema attuale? – Qw4z1

+3

Ciao! Il vero problema era che sebbene avessi cambiato le risorse della libreria nel mio progetto e nelle librerie di riferimento, non ho pulito e ricompilato tutte le librerie, solo la mia app. L'ho semplicemente dimenticato. E poi, nonostante la mia app sia stata compilata con successo, ad un certo punto in fase di esecuzione non ha trovato il metodo getChildFragmentManager() perché la libreria che ho usato era ancora compilata con la versione precedente del pacchetto di supporto. – Peter

0

L'unico modo per risolvere il problema, è l'aggiornamento di ActionBarSherlock con l'ultima libreria di android-support-v4, che è 19.1. Puoi scaricarlo caricandolo da Android Manager. Dopo di ciò ricompilare l'apk con questo cambiamento e otterrai il metodo.