我正在片段内部使用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/

10-12 00:39