Выбор вкладки в SlidingTabLayout вызывает несколько функций getItem - PullRequest
0 голосов
/ 12 января 2019

В моем приложении у меня есть основной вид деятельности с BottomNavigationView, который имеет 3 фрагмента. На одном из этих фрагментов у меня есть SlidingTabLayout с 7 вкладками, по одной на каждый день недели.

Когда я нажимаю на день на этой вкладке, я хочу открыть другой фрагмент и пропустить день недели в качестве параметра через пакет. Во время тестирования я понял, что когда я нажимаю на вкладку, она вызывает несколько getItem функций в моем TabAdapter.

Когда фрагмент с моим SlidingTabLayout сначала загружается, выбранный в «понедельник», вместо вызова getView с позицией 0, он вызывает как 0, так и 1 (я использовал журнал, чтобы напечатать, какие позиции вызывались).

Если я нахожусь в понедельник и нажимаю на среду, она вызывает функцию для позиций 2 (среда) и 3 (четверг). Для другого примера, если я нахожусь в понедельник и нажимаю на субботу, он выбирает 4 (пятница), 5 (суббота) и 6 (воскресенье).

При создании фрагмента в моей основной деятельности я установил SlidingTabLayout, ViewPager и TabAdapter следующим образом:

 View view = inflater.inflate(R.layout.fragment_treinos, container, false);
 slidingTabLayout = view.findViewById(R.id.stl_tabs);
 viewPager = view.findViewById(R.id.vp_treinos);      

 slidingTabLayout.setSelectedIndicatorColors(ContextCompat.getColor(getContext(), R.color.colorAccent));
 TabAdapter tabAdapter = new TabAdapter( getChildFragmentManager() );
 viewPager.setAdapter( tabAdapter );
 slidingTabLayout.setViewPager(viewPager);
 return view;

И мой TabAdapter настроен так:

 private String[] titleTabs = { "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"};

    public TabAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        Fragment fragment = null;
        fragment = new DayFragment();
        // If this function was called just once, I could create the fragment without bugs.  
        // When I click on a Tab, it calls this function multiple times so this log get printed multiple times
        Log.i("statusApp", "POSITION SELECTED: " + position + " (" + titleTabs[position] + ")");
        return fragment;
    }

Итак, что мне не хватает? Я неправильно использую SlidingTabLayout? Есть ли способ это исправить?

...