3 回答
![?](http://img1.sycdn.imooc.com/545866c40001561502200220-100-100.jpg)
TA贡献1883条经验 获得超3个赞
ViewPager
FragmentStatePagerAdapter
FragmentPagerAdapter
ViewPager
notifyDataSetChanged()
ViewPager
getItemPosition()
POSITION_UNCHANGED
ViewPager
getItemPosition()
POSITION_NONE
FirstPageFragment
NextFragment
FirstPageFragment
ViewPager
FragmentManager
.
FragmentPagerAdapter
remove()
FragmentTransaction
public class MyAdapter extends FragmentPagerAdapter{ static final int NUM_ITEMS = 2; private final FragmentManager mFragmentManager; private Fragment mFragmentAtPos0; public MyAdapter(FragmentManager fm) { super(fm); mFragmentManager = fm; } @Override public Fragment getItem(int position) { if (position == 0) { if (mFragmentAtPos0 == null) { mFragmentAtPos0 = FirstPageFragment.newInstance(new FirstPageFragmentListener() { public void onSwitchToNextFragment() { mFragmentManager.beginTransaction().remove(mFragmentAtPos0).commit(); mFragmentAtPos0 = NextFragment.newInstance(); notifyDataSetChanged(); } }); } return mFragmentAtPos0; } else return SecondPageFragment.newInstance(); } @Override public int getCount() { return NUM_ITEMS; } @Override public int getItemPosition(Object object) { if (object instanceof FirstPageFragment && mFragmentAtPos0 instanceof NextFragment) return POSITION_NONE; return POSITION_UNCHANGED; }}public interface FirstPageFragmentListener{ void onSwitchToNextFragment();}
![?](http://img1.sycdn.imooc.com/545847f50001126402200220-100-100.jpg)
TA贡献1775条经验 获得超8个赞
public static class MyAdapter extends FragmentPagerAdapter { private final class CalendarPageListener implements CalendarPageFragmentListener { public void onSwitchToNextFragment() { mFragmentManager.beginTransaction().remove(mFragmentAtPos0) .commit(); if (mFragmentAtPos0 instanceof FirstFragment){ mFragmentAtPos0 = NextFragment.newInstance(listener); }else{ // Instance of NextFragment mFragmentAtPos0 = FirstFragment.newInstance(listener); } notifyDataSetChanged(); } } CalendarPageListener listener = new CalendarPageListener();; private Fragment mFragmentAtPos0; private FragmentManager mFragmentManager; public MyAdapter(FragmentManager fm) { super(fm); mFragmentManager = fm; } @Override public int getCount() { return NUM_ITEMS; } @Override public int getItemPosition(Object object) { if (object instanceof FirstFragment && mFragmentAtPos0 instanceof NextFragment) return POSITION_NONE; if (object instanceof NextFragment && mFragmentAtPos0 instanceof FirstFragment) return POSITION_NONE; return POSITION_UNCHANGED; } @Override public Fragment getItem(int position) { if (position == 0) return Portada.newInstance(); if (position == 1) { // Position where you want to replace fragments if (mFragmentAtPos0 == null) { mFragmentAtPos0 = FirstFragment.newInstance(listener); } return mFragmentAtPos0; } if (position == 2) return Clasificacion.newInstance(); if (position == 3) return Informacion.newInstance(); return null; }}public interface CalendarPageFragmentListener { void onSwitchToNextFragment();}
CalendarPageFragmentListener
newInstance
FirstFragment.pageListener.onSwitchToNextFragment()
NextFragment.pageListener.onSwitchToNextFragment()
- 3 回答
- 0 关注
- 431 浏览
添加回答
举报