Retrieve a Fragment from a ViewPager

前端 未结 23 2836
逝去的感伤
逝去的感伤 2020-11-21 11:13

I\'m using a ViewPager together with a FragmentStatePagerAdapter to host three different fragments:

  • [Fragment1]
  • [Fragment2]<
23条回答
  •  萌比男神i
    2020-11-21 11:43

    Create integer resource id in /values/integers.xml

    1
    2
    3
    

    Then in PagerAdapter getItem function:

    public Fragment getItem(int position) {
    
            Fragment fragment = null;
    
            if (position == 0) {
                fragment = FragmentOne.newInstance();
                mViewPager.setTag(R.integer.page1,fragment);
    
            }
            else if (position == 1) {
    
                fragment = FragmentTwo.newInstance();
                mViewPager.setTag(R.integer.page2,fragment);
    
            } else if (position == 2) {
    
                fragment = FragmentThree.newInstance();
                mViewPager.setTag(R.integer.page3,fragment);
    
            }
    
            return fragment;
            }
    

    Then in activity write this function to get fragment reference:

    private Fragment getFragmentByPosition(int position) {
        Fragment fragment = null;
    
        switch (position) {
            case 0:
                fragment = (Fragment) mViewPager.getTag(R.integer.page1);
                break;
    
            case 1:
    
                fragment = (Fragment) mViewPager.getTag(R.integer.page2);
                break;
    
            case 2:
                fragment = (Fragment) mViewPager.getTag(R.integer.page3);
                break;
                }
    
                return fragment;
        }
    

    Get the fragment reference by calling the above function and then cast it to your custom fragment:

    Fragment fragment = getFragmentByPosition(position);
    
            if (fragment != null) {
                        FragmentOne fragmentOne = (FragmentOne) fragment;
                        }
    

提交回复
热议问题