在SlidingTabLayout中选择选项卡将调用多个getItem函数

时间:2019-01-12 00:45:34

标签: java android android-studio android-fragments fragmentstatepageradapter

在我的应用程序中,我有一个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错误吗?有办法解决吗?

0 个答案:

没有答案