嵌套的Viewpager片段没有得到初始化
我有3 fragments part of a navigation drawer
,其中之一包含viewpager。当我第一次加载应用程序时,viewpager会加载所有的片段。但是,当我使用navi-drawer切换到另一个片段并切换回来时,其中一个viewpager片段未加载。我尝试了代码here和here,但我无法提出解决方案。嵌套的Viewpager片段没有得到初始化
在我的pageradapter代码中,在switch case中为不同的片段;我已经为这个位置放了一个日志,并且在应用的初始加载之后,位置1似乎不会出现。
我的问题是,为什么第一个位置永远不会被调用?有人可以向我解释吗?
这里是我的Pageradapter代码:
class PagerAdapter extends FragmentStatePagerAdapter {
static HeartRate_Fragment heartRate_fragment;
static Calorie_Fragment calorie_fragment;
static Steps_Fragment steps_fragment;
int num;
public PagerAdapter(Context context, FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
//add new fragment here for homepage viewpager
Log.d("position",position+"");
switch (position) {
case 0:
if(calorie_fragment == null)
calorie_fragment = new Calorie_Fragment();
Log.d("flip",0+"");
return calorie_fragment;
case 1:
if(heartRate_fragment == null)
heartRate_fragment = new HeartRate_Fragment();
Log.d("flip",1+"");
return heartRate_fragment;
case 2:
if(steps_fragment == null)
steps_fragment = new Steps_Fragment();
Log.d("flip",2+"");
return steps_fragment;
default:
return null;
}
}
@Override
public int getCount() {
return num;
}
public HeartRate_Fragment getHRFragment()
{
return heartRate_fragment;
}
public Calorie_Fragment getCalorie_fragment()
{
return calorie_fragment;
}
public Steps_Fragment getSteps_fragment()
{
return steps_fragment;
}
class PagerAdapter extends FragmentStatePagerAdapter {
static HeartRate_Fragment heartRate_fragment;
static Calorie_Fragment calorie_fragment;
static Steps_Fragment steps_fragment;
int num;
public PagerAdapter(Context context, FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
//add new fragment here for homepage viewpager
Log.d("position",position+"");
switch (position) {
case 0:
if(calorie_fragment == null){
calorie_fragment = new Calorie_Fragment();
return calorie_fragment;
}else {
return getCalorie_fragment(); }
case 1:
if(heartRate_fragment == null){
heartRate_fragment = new HeartRate_Fragment();
return heartRate_fragment;}
else{ return getHRFragment();}
case 2:
if(steps_fragment == null){
steps_fragment = new Steps_Fragment();
return steps_fragment;
}
else{ return getSteps_fragment();}
default:
return null;
}
}
@Override
public int getCount() {
return 3;
}
public HeartRate_Fragment getHRFragment()
{
return heartRate_fragment;
}
public Calorie_Fragment getCalorie_fragment()
{
return calorie_fragment;
}
public Steps_Fragment getSteps_fragment()
{
return steps_fragment;
}
尝试这种确保您使用getChildFragmentManager();
注意:** setOffscreenPageLimit **的默认值是3,您不需要明确设置它。 – Amir
编辑我的答案 –
当我调用pagerAdapter = new PagerAdapter(getActivity()。getChildFragmentManager(),3)时,我无法使用getChildFragmentManager()在我的homefragment代码中。它抛出了无法解析的方法getChildFragmentmanager –
你想开第二个片段上刷卡? –
我的homefragment已经包含一个viewpager。该viewpager包含3个片段。那第二个没有被初始化。第一和第三是。 –
你是如何检查它? –