一般來講,我們再使用viewpager的時候栏尚,是在代碼中動態(tài)的添fragment。此時,我們不能去指定fragment的id,也不能指定他的tag,如果你一定要去指定tag,運行時會提示骆姐,tag已經(jīng)被指定镜粤。那么,在動態(tài)的添加了fragment之后玻褪,我們如何能獲取到該fragment并修改其中的內容呢肉渴。兩種方法:
方法一:
MyFragment fragment=getSupportFragmentManager.FindFragmentByTag(“android:switcher:” + R.id.viewpager + “:0″);
這里要記住的就是”android:switcher:” + R.id.viewpager + “:0″ 這個字符竄表示的就是該fragment的tag,其中0 是fragment 在viewpager中的位置带射。
方法二:
因為第一種方法對基于FragmentPagerAdapter的實現(xiàn)是有效的同规,但對于FragmentStatePagerAdapter就無效了。因FragmentStatePagerAdapter不會對傳給FragmentManager的Fragment設置tag.
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
FragmentStatePagerAdapter adapter = pager.getAdapter();
MyFragment fragment = (MyFragment)adapter.instantiateItem(pager,position);
instantiateItem(pager,position)方法會返回在position位置的fragment的引用窟社。如果該fragment 已經(jīng)實例化了,再次調instantiateItem(pager,position)的時候券勺,該方法并不會調用getItem()來再次實例化fragment,而是直接返回引用灿里。