2017-02-20 7 views
1

Я использую три фрагмента на пейджере представления, im используя идентификатор позиции в качестве ссылки и на основе идентификатора позиции, на котором отображаются мои фрагменты, каждый фрагмент имеет разные данные, вот мой кодФрагменты внутри представления пейджера

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


    } 

В этом коде отображаются только два значения журнала, и даже если данные всех трех фрагментов отображаются, im, не получая журнал из всех трех фрагментов, и данные в этом фрагменте отображаются, когда я сажусь назад к двум другим фрагментам, я знаю, где я ошибаюсь, помогите мне.

ответ

1

Это потому, что ViewPager загружает текущую страницу и следующую 1 страницу в памяти по умолчанию.

Пробег: setOffScreenPageLimit().

пример)

ViewPager viewPager; 
viewPager.setOffScreenPageLimit(2); 
+0

Я попробовал, им, если я применил mPager.setOffScreenpageLimit (2). Im только получение значения журнала из фрагмента 1 и другие два фрагмента ушли –

+0

mPager.setOffscreenPageLimit (3); когда я использую это im, получая все три журнала, только в первый раз, когда я запускаю его из студии android снова, если я провёл фрагменты, не получая ничего @Suhyeon Lee –

+0

@TamilSelvan. Вам лучше прочитать документ API «ViewPager.setOffScreenpageLimit () 'сначала. Он загружает страницу в первый раз и сохраняет их в памяти, и метод getItem() вызывается, когда страница загружается. Если вы хотите получать журнал, когда вы меняете страницу, вместо этого вы должны использовать 'ViewPager.OnPageChangeListener()'. –

0

Используйте this.Start свою позицию от 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), " "); 


} 
+0

Ive уже пробовал, но никаких изменений. @ Райкумар Кумават –