怎麼在viewpager中獲取子fragment裏面的控件

有時候我們想要操控viewpager中獲取焦點的fragment的控件,但是並沒有getCurrentFragment 等類似的方法,但是提供了setPrimaryItem方法,但是這個實在adapter裏面的,所有我們像個辦法讓他把當前的fragment從adapter中傳出來,那麼就要重寫fragmentpageradapter
代碼如下:

public class MyFragmentAdapter extends FragmentPagerAdapter {

    public Fragment currentFragment;

    public MyFragmentAdapter(FragmentManager fm, List<Fragment> list) {
        super(fm);
        this.list=list;
    }

    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object) {
        this.currentFragment= (Fragment) object;
        super.setPrimaryItem(container, position, object);
    }


    @Override
    public Fragment getItem(int position) {
        return 。。。;
    }

    @Override
    public int getCount() {
        return。。。;
    }
}

這樣我們就可以通過外部調用currentFragment來獲取當前fragment,
如:
((MyFragmentAdapter)viewPager.getAdapter()).currentFragment
然後強轉成你需要的fragment就可以啦。
調用方法的時候只要,fragment.getView().finViewById();

比如:
MyFragment mf= (MyFragment ) ((MyFragmentAdapter)viewPager.getAdapter()).currentFragment;
//找到控件
ScrollView scrollview= (ScrollView) mf.getView().findViewById(R.id.tuijian_scrollview);

發佈了50 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章