【发布时间】:2016-10-16 12:09:07
【问题描述】:
我的活动中有一个 ViewPager(父 ViewPager),有 4 个片段。其中一个片段实现了具有自动滑动功能的滑动 ViewPager(子 ViewPager)。
当我将父 ViewPager 滑动到选项卡 3,然后我返回到包含滑动 ViewPager 的第一个片段时,一些幻灯片消失了,而另一些则保留了下来。当我来回滑动 ViewPager(子 ViewPager)几次时,它会恢复到原来的状态。
我假设在滑动父 ViewPager 时,滑动视图分页器的片段状态会丢失。
这是父 ViewPager 的适配器:
public class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
这是子 ViewPager 的适配器(滑块):
class sliding_PageAdapters extends FragmentPagerAdapter {
int mNumOfTabs;
public sliding_PageAdapters(FragmentManager fm, int numTabs) {
super(fm);
this.mNumOfTabs = numTabs;
}
@Override
public void destroyItem(ViewGroup viewPager, int position, Object object) {
viewPager.removeView((View) object);
}
@Override
public Fragment getItem(int position) {
Bundle ar = new Bundle();
FragmentHomeImages fragment = new FragmentHomeImages();
switch (position) {
case 0:
ar.putString("number", "0");
fragment.setArguments(ar);
return fragment;
case 1:
ar.putString("number", "1");
fragment.setArguments(ar);
return fragment;
case 2:
ar.putString("number", "2");
fragment.setArguments(ar);
return fragment;
case 3:
ar.putString("number", "3");
fragment.setArguments(ar);
return fragment;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
子 ViewPager 在这里被getChildFragmentManager() 调用:
sliding_pagerAdapter = new sliding_PageAdapters(getChildFragmentManager(), 4);
父 ViewPager 在这里被getSupportFragmentManager() 调用:
adapter = new ViewPagerAdapter(getSupportFragmentManager());
【问题讨论】:
标签: android android-fragments android-viewpager adapter