viewpager возвращает неверный индекс с помощью специального адаптера - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу использовать 6 фрагментов (1,2,3,4,5,6) в viewpager, используя пользовательский адаптер.

также я использую android.support.v4.app.

но метод getItem () возвращает неправильный индекс.

например, покажите второй фрагмент при первой загрузке myApp.

и многократное пролистывание вправо,

2 -> 3-> 4 -> 5-> 6-> 6

и многократное перелистывание влево,

6 -> 4 -> 3 -> 2 -> 1 -> 1

и проводя вправо неоднократно,

1 -> 3 -> 4-> 5-> 6-> 6

.... ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ ... я не знаю почему.....

Код источника здесь.

  • mainAcitivity.java

    //viewPager
    viewPager = (ViewPager)findViewById(R.id.viewPager);
    final MyViewPagerAdapter adapter = new MyViewPagerAdapter(getSupportFragmentManager());
    getFragmentManager().beginTransaction().commitNow();
    
    viewPager.setAdapter(adapter);
    
  • MyViewPagerAdapter

    public class MyViewPagerAdapter extends FragmentStatePagerAdapter {
    
    public Fragment Fragment1;
    public Fragment Fragment2;
    public Fragment Fragment3;
    public Fragment Fragment4;
    public Fragment Fragment5;
    public Fragment Fragment6;
    String [] output = new String[5];
    
    public MyViewPagerAdapter(FragmentManager fm) {
        super(fm);
    
        fm.executePendingTransactions();
    }
    
    @Override
    public Fragment getItem(int arg0) {
    
        if(arg0==0){
            return new Fragment1();
        } else if(arg0==1){
            return new Fragment2();
        } else if(arg0==2){
            return new Fragment3();
        } else if(arg0==3){
            return new Fragment4();
        } else if(arg0==4){
            return new Fragment5();
        } else if(arg0==5){
            return new Fragment6();
        }
    
        return new Fragment1();
    }
    
    @Override
    public int getCount() {
        return 6;
    }
    
    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
    
    
    }
    
  • Фрагмент1

    public class Fragment1 extends Fragment {
    
    public Fragment1(){
    
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    
        return inflater.inflate(R.layout.activity_fragment1, container, false);
    
    }
    
    public void onStart() {
        super.onStart();
    }
    
    }
    
  • Фрагмент2, 3, 4, 5, 6 То же

...