Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 隐藏父片段时,ViewPager片段将丢失。我该如何解决这个问题?_Android_Android Fragments - Fatal编程技术网

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

Android 隐藏父片段时,ViewPager片段将丢失。我该如何解决这个问题?,android,android-fragments,Android,Android Fragments,我有一个片段(ProfileFragment),其中包含一个ViewPager。Viewpager包含2个片段。首次设置ProfileFragment时,它工作正常。但是,当您打开其他片段然后返回ProfileFragment时,ViewPager中的片段将消失。我如何确保他们留下来?这是我的代码: ProfileFragment: import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager;

我有一个片段(ProfileFragment),其中包含一个ViewPager。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;
    }
}
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;
    }
}
MyPagerAdapter:

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;
    }
}
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(),但我不能使用它,它说无法解析方法

将其更改为:


为了使用
getChildFragmentManager()

ProfileFragment是否扩展了android.support.v4.app.Fragment?如果是,您应该能够调用getChildFragmentManager(),是的,它扩展了支持片段。我的gradle库可能有问题,我需要哪一个?它说“无法解决方法getChildFragmentManager()”,我的gradle库可能有问题,我在这里需要哪一个?编译'com.android.support:support-v4:23.1.1'。库似乎没有什么问题。我只是不能在我的片段上使用getChildFragmentManager方法。@DogeDogeoglu您还可以导入导入android.support.v4.app.FragmentManager吗?在ProfileFragmentI中,我也导入了它,但它没有改变任何东西。我的gradle库可能有问题,我在这里需要哪一个?您需要支持库,但在适配器中,您已经使用了从支持库导入的内容,所以我不认为这是原因。这里的问题是什么?