隐藏父片段时,ViewPager片段将丢失。我该如何解决这个问题?

时间:2016-01-27 08:40:42

标签: android android-fragments

我有一个包含ViewPager的片段(ProfileFragment)。 Viewpager包含2个片段。首次设置ProfileFragment时,它可以正常工作。但是,当您打开其他片段然后返回到ProfileFragment时,ViewPager中的片段就会消失。我如何确保他们留下来?这是我的代码:

ProfileFragment:

import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;

public class ProfileFragment extends Fragment {

    private ViewPager pager;
    private MyPagerAdapter adapter;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_profile, container, false);

        adapter = new MyPagerAdapter(getFragmentManager());
        pager.setAdapter(adapter);

        return view;
    }
}

MyPagerAdapter:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class MyPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                return new ProfileUserInfoFragment();
            case 1:
                return new ProfileUserInfoFragment();
            default:
                break;
        }
        return null;
    }

    @Override
    public int getCount() {
        return 2;
    }
}

注意:我看到一些建议使用getChildFragmentManager()而不是getFragmentManager(),但我不能使用它,它说无法解决方法。

2 个答案:

答案 0 :(得分:0)

将其更改为:

adapter = new MyPagerAdapter(getChildFragmentManager());
pager.setAdapter(adapter);

答案 1 :(得分:0)

您的ProfileFragment应扩展android.support.v4.app.Fragment以使用getChildFragmentManager()