2012-04-13 15 views
6

L'unico modo documentato che ho trovato è:Come posso ottenere un riferimento a un frammento in un ViewPager?

MyFragment fragment = (MyFragment) getSupportFragmentManager().findFragmentById(R.id.fragment); 

Ma dal momento che il frammento viene creata un'istanza in un ViewPager non ho un id.

List<Fragment> fragments = new Vector<Fragment>(); 
    fragments.add(Fragment.instantiate(this, Fragment1.class.getName())); 
    fragments.add(Fragment.instantiate(this, Fragment2.class.getName())); 
    fragments.add(Fragment.instantiate(this, Fragment3.class.getName())); 

Grazie

+1

Stesso problema qui. Sembra essere risolto in http://stackoverflow.com/questions/7379165/update-data-in-listfragment-as-part-of-viewpager. – yuku

risposta

5

in cui sembra essere tenuta in tutti i frammenti di memoria in un oh-così-obsolete Vector. In tal caso, recupereresti il ​​frammento dallo stesso Vector. Ad esempio, chiamare getCurrentItem() per il numero ViewPager per trovare l'indice del frammento attualmente selezionato, quindi chiamare get() sul numero Vector con tale indice.

nota, però, che se si fa affidamento su FragmentPagerAdapter o FragmentStatePagerAdapter per tenere i vostri frammenti, che un frammento di un determinato indice potrebbe non esistere, o perché non è stato ancora creato o è stato scartato per ridurre al minimo il consumo di memoria .

(a proposito, vedi Why is Java Vector class considered obsolete or deprecated? per maggiori informazioni su Vector)

Problemi correlati