Android 隐藏父片段时,ViewPager片段将丢失。我该如何解决这个问题?
我有一个片段(ProfileFragment),其中包含一个ViewPager。Viewpager包含2个片段。首次设置ProfileFragment时,它工作正常。但是,当您打开其他片段然后返回ProfileFragment时,ViewPager中的片段将消失。我如何确保他们留下来?这是我的代码: ProfileFragment: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;
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库可能有问题,我在这里需要哪一个?您需要支持库,但在适配器中,您已经使用了从支持库导入的内容,所以我不认为这是原因。这里的问题是什么?