【问题标题】:setOnTabSelectedListener is deprecated不推荐使用 setOnTabSelectedListener
【发布时间】:2016-07-21 08:21:05
【问题描述】:

我总是看到以下代码的划线 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 已弃用

但是,该程序似乎运行良好。我可以知道发生了什么事吗?

【问题讨论】:

    标签: android


    【解决方案1】:

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

    已弃用意味着他们认为这不是一个好方法,或者他们已经找到了更好的方法,并且将来会删除这种已弃用的方法。

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

    区别在于addOnTabSelectedListener:

    • 您可以添加多个侦听器。使用setOnTabSelectedListener,您只能拥有一个。
    • 您应该在完成后删除监听器,使用removeOnTabSelectedListener。

    一般经验法则:永远不要使用已弃用的方法。

    【讨论】:

    • 支持涵盖所有要点的详细答案,但我认为“修复是使用 addOnTabSelectedListener”应该以粗体显示以快速找到答案
    • @ShirishHerwade 我的目标不是提供快速答案,而是提供完整的答案。我认为解释与解决方案一样重要:-)
    • 感谢@Tim Castelijns,这很有帮助,但我什么时候应该使用 removeOnTabSelectedListener.?是 onTabUnselected 还是 onTabReselected?
    • @eLi 当您不再想收听 tabSelected 事件时使用它。在实践中,这几乎不需要
    【解决方案2】:

    由于setOnTabSelectedListener现在已弃用,您可以使用新方法

    addOnTabSelectedListener(OnTabSelectedListener)
    

    此更改允许将多个选项卡选择侦听器添加到单个 TabLayout。

    【讨论】:

    • 多个监听器的任何用例场景?
    • 什么意思?要添加多个监听器,只需使用此方法添加每个监听器
    【解决方案3】:

    在 kotlin 中的用法如下面的代码;

       tabLayoutView.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
                    override fun onTabReselected(p0: TabLayout.Tab?) {
                    }
    
                    override fun onTabUnselected(p0: TabLayout.Tab?) {
    
                    }
    
                    override fun onTabSelected(p0: TabLayout.Tab?) {
                        viewPager.currentItem = tabLayoutView.selectedTabPosition
                    }
    
    
                })
    

    【讨论】:

      【解决方案4】:

      改用以下代码:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        • 2012-11-14
        • 2019-11-08
        • 2019-11-08
        • 2020-01-03
        • 2011-12-02
        • 2015-01-24
        相关资源
        最近更新 更多