FragmentPagerAdapter Fragment getItem неправильная позиция? - PullRequest
0 голосов
/ 20 сентября 2018

Так что по какой-то причине я получаю неправильную позицию, когда я переключаю вкладки на моей вкладке активности.

В нижней части моего поста вы можете видеть мой logcat, когда я запускаю свое приложение, на вкладке 1 и вкладке 2 вызывается их oncreateview.

И позиция 0 переключается на 1, хотя яна вкладке 1, которая должна быть позицией 0.

Так что моя проблема в том, что когда я меняю вкладку, отображаются неправильные данные и неверные данные logcat.

например, я перехожу на вкладку 2,logcat показывает oncreateview, который я вызвал с tab3?

Как я могу это исправить?

Спасибо,

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    private int numOfTabs;

    SectionsPagerAdapter(FragmentManager fm, int numOfTabs) {
        super(fm);
        this.numOfTabs = numOfTabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                Log.e(TAG, "Pos: "+ position);
                return new Tab1();
            case 1:
                Log.e(TAG, "Pos: "+ position);
                return new Tab2();
            case 2:
                Log.e(TAG, "Pos: "+ position);
                return new Tab3();
            case 3:
                Log.e(TAG, "Pos: "+ position);
                return new Tab4();
            case 4:
                Log.e(TAG, "Pos: "+ position);
                return new Tab5();
                default:
                    return null;
        }
    }

    @Override
    public int getCount() {
        // Get total pages
        return numOfTabs;
    }
}

Logcat

 .activities.MainActivity: Pos: 0
 .activities.MainActivity: Pos: 1
 .fragments.Tab1: onCreateView called!
 .fragments.Tab2: onCreateView called!

1 Ответ

0 голосов
/ 20 сентября 2018

ViewPager по умолчанию загружает 2 вкладки.Так что getItem вызывается дважды, когда вы впервые открываете приложение.Когда вы переходите к tab2, ViewPager заранее загружает tab3, чтобы прокрутка была плавной.См. offscreenPageLimit .

...