Ho un piccolo problema: ho un ViewPager con alcune pagine e uso FragmentStatePagerAdapter per gestire i dati. In portrait ho per esempio 20 pagine per ViewPager e in landscape ho solo 10 pagine per ViewPager. Quindi su un cambio di orientamento creo un nuovo adattatore con dati diversi.ViewPager + FragmentStatePagerAdapter + cambio di orientamento
Ecco una piccola spiegazione del perché: mostro un'immagine in verticale e due in orizzontale ma sempre tutte in valore. Se ho 10 foto da mostrare, ne ho 10 in verticale e 5 in orizzontale (sempre in due).
ma ora ho uno strano bug: Quando sono in Paesaggio sull'indice 5 e spegnere il dispositivo, pagina corrente del ViewPager è impostato a 10. Se mi rivolgo di nuovo indietro io sono a pagina 5. Se i swipe il ViewPage ora a pagina 10 il metodo getItem dell'adattatore non viene mai chiamato e il ViewPage mi mostra l'immagine di un ritratto e non i due per il paesaggio. Come può accadere? C'è una cache nell'adattatore o in ViewPager? Nel onCreate dell'attività viene creato tutto, l'adattatore e anche i dati (solo stringhe con percorso) per ViewPager. Quindi qualche idea su come risolvere questa "caratteristica" davvero spaventosa?
Ecco alcuni codice:
onCreate:
mViewPagerAdapter = new ReaderPageViewAdapter(getSupportFragmentManager(), getBaseContext(), mCurrentDocument.mPages, getResources()
.getConfiguration().orientation);
mPageReader = (ReaderViewPager) findViewById(R.id.pager);
mPageReader.setAdapter(mViewPagerAdapter);
adattatore getItem:
public Fragment getItem(final int index) {
final PageInfo pageInfo = mPages.get(index);
final PageFragment pageFragment = (PageFragment) PageFragment
.instantiate(mContext, pageInfo.mClss.getName(), pageInfo.mArgs);
return pageFragment;
}
Se avete bisogno di qualcosa di più mi dica. Grazie
Per me questo http://stackoverflow.com/questions/17629463/fragmentpageradapter-how-to-handle-orientation-changes approccio si adatta perfettamente! – r4m