我正在片段内部使用viewpager。我正在使用pagerAdapter通过XML在两个页面之间切换。这是代码:
public class DemoPagerAdapter extends FragmentPagerAdapter {
public DemoPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
Fragment f;
switch (index) {
case 0:
f = new FirstFragment();
break;
case 1:
f = new SecondFragment();
break;
}
return f;
}
@Override
public int getCount() {
return 2;
}
}
我这样称呼它:
public class DemoFragment1 extends Fragment {
private ViewPager viewPager;
private DemoPagerAdapter mAdapter;
public DemoFragment1() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.security, container, false);
mAdapter = new DemoPagerAdapter(getActivity().getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
showPages(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
return rootView;
}
一切正常。但是,如果我转到DemoFragment2,然后再回到DemoFragment1,则不会调用PagerAdapter。
最佳答案
您的ViewPager嵌套在一个Fragment中,您应该使用ChildFragmentManager,修改:
mAdapter = new DemoPagerAdapter(getChildFragmentManager());
我还假定ViewPager将屏幕外的片段保留在内存中,因此它可能不会再次调用
getItem(int index)
。加viewPager.setOffscreenPageLimit(0);
return rootView;
关于android - 我在Android中第二次移至 fragment 时未在 fragment 内部调用PagerAdapter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22190936/