对于以下代码,我总是看到划掉的行 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
然而,该程序似乎工作得很好。我可以知道发生了什么事吗?
答案 0 :(得分:175)
我可以知道最新情况吗?
不推荐意味着他们认为这不是一个好方法,或者他们已经找到了更好的方法,这种弃用的方法将来会被删除。
修复方法是使用addOnTabSelectedListener代替 setOnTabSelectedListener
它的工作方式几乎相同。
区别在于addOnTabSelectedListener
:
setOnTabSelectedListener
,您只能拥有一个。一般经验法则:永远不要使用弃用的方法。
答案 1 :(得分:19)
由于setOnTabSelectedListener
现已弃用,您可以使用新方法
addOnTabSelectedListener(OnTabSelectedListener)
此更改允许将多个标签选择侦听器添加到单个TabLayout
。
答案 2 :(得分:3)
请改用以下代码:
$clinic_id = auth()->user()->clinic_id;
$users = User::whereHas('roles', function ($query) {
$query->where('name', 'admin');
})->where('clinic_id', $clinic_id)->get();
如果您想在点击标签时同步它们,或者点按上面的viewpager代码是同步的关键。
答案 3 :(得分:1)
在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 :(得分:0)
检查我的答案here以获得更新的方法用法addOnTabSelectedListener