В моем приложении у меня есть основной вид деятельности с 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? Есть ли способ это исправить?