Android - 片段里面的一个片段里面的ViewPager问题

时间:2015-11-15 01:17:00

标签: android android-fragments android-viewpager

在我的应用程序中,我有一个可以旋转4个碎片的View寻呼机。其中一些碎片内部有其他碎片。 Viewpager第一次启动片段它工作正常,但是如果我旋转并返回到前一个片段,则内部片段无法显示(我注意到它们中的getActivity()返回null)。

例如,应用程序启动,我通过viewpager移动并查看所有主要片段,它们看起来很好,然后我向后滚动,每个具有内部片段的主片段都无法正确显示。

我使用" FragmentStatePagerAdapter"对于我的ViewPager,代码如下(例如变量名称)。

私有类ContentPagerAdapter扩展了FragmentStatePagerAdapter {

    public ContentPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Parcelable saveState() {
        return null;
    }

    @Override
    public Fragment getItem(int pos) {

        Fragment fragment = null;
        try {
            if (pos == POS1) {
                if (fragment1 == null) {
                    fragment1 = Fragment1.newInstance();
                }
                fragment = fragment1;
            } else if (pos == POS2) {
                if (fragment2 == null) {
                    fragment2 = Fragment2.newInstance(something);
                }
                fragment = fragment2;
            } else if (pos == POS3) {
                if ( fragment3 == null ) {
                    fragment3 = Fragment3.newInstance(something3);
                }
                fragment = fragment3;
            } else { //default
                if (fragment4 == null) {
                    fragment4 = Fragment4.newInstance(something4);
                }
                fragment = fragment4;
            }
        }catch (Exception e) {
            Log.e(AppConstants.APP_TAG, "Cannot create fragment", e);
            finish();
        }

        return fragment;
    }

    @Override
    public int getCount() {
        int count = 4;
        return count;
    }

    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
}

1 个答案:

答案 0 :(得分:2)

在实例化PagerAdapter时,请使用getChildFragmentManager()代替getFragmentManager()。如果需要更多信息,这里解决了类似的问题ViewPager in TabFragment not loading second time