在我的应用程序中,我有一个Main Activity,其BottomNavigationView具有3个片段。在这些片段之一上,我有一个带有7个标签的SlidingTabLayout,一个标签用于一周的每一天。
当我单击此选项卡上的一天时,我想打开另一个片段,并将星期几作为参数传递给捆绑包。在测试时,我意识到当我单击一个选项卡时,它将在我的TabAdapter中调用多个 getItem 函数。
当第一次加载带有我的SlidingTabLayout的片段时,在“星期一”上选择了该片段,而不是调用位置为0的getView,而是调用了0和1(我使用Log来打印正在调用的位置)。
如果我在星期一,而我在星期三单击,它将同时调用位置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错误吗?有办法解决吗?