创build选项卡布局时会提示setOnTabSelectedListener已被弃用

我从另一个网站复制了一些代码。 奇怪的是,我总是看到这个划线( setOnTabSelectedListener )为下面的代码

 viewPager.setAdapter(adapter); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition()); } } 

显示的错误是:

setOnTabSelectedListener已弃用

但是,程序似乎工作得很好。 我可以知道发生了什么事吗?

我可以知道发生了什么事吗?

弃用意味着他们认为这不是一个好办法,或者他们已经find了一个更好的办法,而这个弃用的方法将来会被删除。

解决方法是使用addOnTabSelectedListener而不是setOnTabSelectedListener
它以几乎相同的方式工作。

addOnTabSelectedListener不同的是:

  • 您可以添加多个侦听器。 用setOnTabSelectedListener你只能有一个。
  • 你应该在removeOnTabSelectedListener完成之后移除监听器 。

一般的经验法则:从来没有使用过时的方法。

由于这个方法现在是drepecatad,你可以使用新的方法

 addOnTabSelectedListener(OnTabSelectedListener) 

实际上,此更改允许将多个TabSelected侦听器添加到一个TabLayout。

改用下面的代码:

 tablayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout)); 

如果您想在点击标签或滑动浏览器时同步它们,上面的代码是同步的关键。