视图寻呼机

时间:2017-02-20 09:03:25

标签: android android-fragments android-viewpager

我在视图寻呼机上使用了三个片段,我使用位置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), " ");


    }

在这段代码中,只显示了两个日志值,即使显示了所有三个片段的数据,我也没有从所有三个片段中获取日志,当我向后滑动时,该片段中的数据正在显示对于另外两个片段,我有人知道我错在哪里请帮助我。

2 个答案:

答案 0 :(得分:1)

这是因为默认情况下ViewPager会将当前页面和下一页加载到内存中。

尝试setOffScreenPageLimit()

例)

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), " ");


}