我在视图寻呼机上使用了三个片段,我使用位置ID作为参考,并根据我的片段显示的位置ID,每个片段中都有不同的数据,这里是我的代码
@Override
public Fragment getItem(int position)
{
if(position==1){
Log.e("Fragment","Fragment 1::"+String.valueOf(i));
if (!(i<3))
{
new Progress(100).execute();
new Progress2(20).execute();
new Progress3(30).execute();
}
++i;
return SlideFragment.newInstance(1, " ");}
if(position==2){
Log.e("Fragment","Fragment 2");
if (!(i<3))
{
new Progress(40).execute();
new Progress2(50).execute();
new Progress3(90).execute();
}
++i;
return Slidetwo.newInstance(String.valueOf(2), " ");}
if (position==3)
Log.e("Fragment","Fragment 3");
if (!(i<3))
{
new Progress(50).execute();
new Progress2(10).execute();
new Progress3(40).execute();
}
++i;
return SlideThree.newInstance(String.valueOf(3), " ");
}
在这段代码中,只显示了两个日志值,即使显示了所有三个片段的数据,我也没有从所有三个片段中获取日志,当我向后滑动时,该片段中的数据正在显示对于另外两个片段,我有人知道我错在哪里请帮助我。
答案 0 :(得分:1)
这是因为默认情况下ViewPager
会将当前页面和下一页加载到内存中。
例)
ViewPager viewPager;
viewPager.setOffScreenPageLimit(2);
答案 1 :(得分:0)
使用此。从0开始你的位置;
@Override
public Fragment getItem(int position)
{
if(position==0){
Log.e("Fragment","Fragment 1::"+String.valueOf(i));
if (!(i<3))
{
new Progress(100).execute();
new Progress2(20).execute();
new Progress3(30).execute();
}
++i;
return SlideFragment.newInstance(1, " ");}
if(position==1){
Log.e("Fragment","Fragment 2");
if (!(i<3))
{
new Progress(40).execute();
new Progress2(50).execute();
new Progress3(90).execute();
}
++i;
return Slidetwo.newInstance(String.valueOf(2), " ");}
if (position==2)
Log.e("Fragment","Fragment 3");
if (!(i<3))
{
new Progress(50).execute();
new Progress2(10).execute();
new Progress3(40).execute();
}
++i;
return SlideThree.newInstance(String.valueOf(3), " ");
}