【发布时间】:2016-12-03 11:56:50
【问题描述】:
我的MainActivity 中有一个Tablayout 和一个显示三个片段的Viewpager。
当应用启动时,会发生这种情况:
onCreate Fragment 1
onCreate Fragment 1
onActivityCreated Fragment 1
onResume Fragment 1
onActivityCreated Fragment 2
onResume Fragment 2
点击第二个标签时会发生这种情况:
onCreate Fragment 1
onActivityCreated Fragment 3
onResume Fragment 3
点击第三个标签:
onSaveInstanceState Fragment 1
从第三个标签点击第二个标签:
onCreate Fragment 1
onActivityCreated Fragment 1
onResume Fragment 1
代码
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
}
在主活动中
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tablayout);
tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(DishFragment.newInstance(1), "Кулинария");
adapter.addFragment(DishFragment.newInstance(2), "Кондитерская");
adapter.addFragment(DishFragment.newInstance(3), "Хлебобулочная");
viewPager.setAdapter(adapter);
}
onCreate 片段 1 onCreate 片段 1 onActivityCreated 片段 1 onResume 片段 1 onActivityCreated 片段 2 onResume 片段 2 onCreate 片段 1 onActivityCreated 片段 3 onResume 片段 3 onSaveInstanceState 片段 1 onCreate 片段 1 onActivityCreated 片段 1 onResume 片段 1
【问题讨论】:
-
ViewPager 默认加载当前的 Fragment 和相邻的 Fragment。不过,我不确定这是否是您要问的问题
标签: android android-viewpager android-tabs