2012-04-13 11 views
6

Jedynym udokumentowany sposób znalazłem to:Jak mogę uzyskać odwołanie do Fragmentu w ViewPager?

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

Ale ponieważ fragment jest tworzony w ViewPager nie mam 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())); 

Dzięki

+1

sam problem tutaj. Wydaje się być rozwiązany w http://stackoverflow.com/questions/7379165/update-data-in-listfragment-as-part-of-viewpager. – yuku

Odpowiedz

5

pojawiasz się trzyma wszystkie fragmenty w pamięci w jakże przestarzałego Vector. W takim przypadku możesz pobrać swój fragment z tego samego Vector. Na przykład wywołaj getCurrentItem() na ViewPager, aby znaleźć aktualnie wybrany indeks fragmentu, a następnie wywołaj get() na Vector z tym indeksem.

Uwaga jednak, że jeśli opierając się na FragmentPagerAdapter lub FragmentStatePagerAdapter trzymać swoje fragmenty, że fragment o podanym indeksie nie może istnieć, ponieważ albo nie zostały jeszcze utworzone lub został odrzucony, aby zminimalizować zużycie pamięci .

(BTW, patrz Why is Java Vector class considered obsolete or deprecated? więcej na Vector)

Powiązane problemy