首页 > 解决方案 > 在 Tablayout tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() 方法不起作用

问题描述

我在活动中有三个带有片段的选项卡,但是方法 addOnTabSelectedListener 不起作用,我的片段工作正常,当我用来调试时,我也有 viewPager,它没有进入方法内部

viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

    Intent intent = getIntent();
    pos = intent.getIntExtra("position",0);
    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());

            if (tab.getPosition() == 1) {
              tabLayout.getTabAt(pos).select();
                tabLayout.setBackgroundColor(ContextCompat.getColor(Shop.this,
                        R.color.white));
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    getWindow().setStatusBarColor(ContextCompat.getColor(Shop.this,
                            R.color.white));
                }
            } else if (tab.getPosition() == 2) {
               /* toolbar.setBackgroundColor(ContextCompat.getColor(Shop.this,
                        android.R.color.white));*/
                tabLayout.setBackgroundColor(ContextCompat.getColor(Shop.this,
                        android.R.color.white));
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    getWindow().setStatusBarColor(ContextCompat.getColor(Shop.this,
                            android.R.color.white));
                }
            } else {
               /* toolbar.setBackgroundColor(ContextCompat.getColor(Shop.this,
                        R.color.white));*/
                tabLayout.setBackgroundColor(ContextCompat.getColor(Shop.this,
                        R.color.white));
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    getWindow().setStatusBarColor(ContextCompat.getColor(Shop.this,
                            R.color.white));
                }
            }
        }
        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
        }
        @Override
        public void onTabReselected(TabLayout.Tab tab) {
        }
    });

标签: androidandroid-tablayout

解决方案


你可以试试这个方法吗

tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(
 new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
  @Override
  public void onTabSelected(TabLayout.Tab tab) {
      //for selected tab, write your code here...
  }
});

有关详细而清晰的解释,请访问此链接上的 TabSelected Selected Not Called


推荐阅读