Android:ViewPager中獲取當前界面的Fragment

在項目中,有時會用到在ViewPager中顯示同樣類型的Fragment,同時這樣的Fragment的個數是動態的,但是PagerAdapter沒有給我們提供getCurrentFragment類似的方法。

通過查閱資料和看源碼,PagerAdapter中有個setPrimaryItem(ViewGroup container, int position, Object object) 方法,我們在這裏面將就可以獲得當前的Fragment,我們將其記錄下來,然後在自己的PagerAdapter中寫個getCurrentFragment() 方法,就可以在外部獲取當前界面的Fragment。


public class XXXPagerAdapter extends FragmentStatePagerAdapter {

    private XXXFragment mCurrentFragment;
    private List<XXX> mList;

    public XXXPagerAdapter(FragmentManager fm, List<XXX> list) {
        super(fm);
        mList = list;
    }

    @Override
    public Fragment getItem(int position) {
        return XXXFragment.newInstance(mList.get(position));
    }

    @Override
    public int getCount() {
        return mList == null ? 0 : mList.size();
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        XXXFragment fragment = (XXXFragment) super.instantiateItem(container, position);
        return fragment;
    }
    
    //----------------------下面纔是重點-----------------

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


    public XXXFragment getCurrentFragment() {
        return mCurrentFragment;
    }
}

這裏的FragmentStatePagerAdapter是繼承與PagerAdapter的。


在Activity 中只需這樣調用:

mPagerAdapter.getCurrentFragment();


參考:http://www.cnblogs.com/englefly/p/4222953.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章