我正在尝试在我的Activity中使用TabLayout。每个Tab都会将用户带到一个片段。
getFragmentManager().popBackStack()
。现在我还要将选定的标签更新为Tab1。有没有办法在不调用TabSelectedListener的情况下在TabLayout中选中标签?
答案 0 :(得分:3)
只需这样做:
TabLayout.Tab tab = tabLayout.getTabAt(index);
tabLayout.removeOnTabSelectedListener(this);
tab.select();
tabLayout.addOnTabSelectedListener(this);
享受:)
答案 1 :(得分:1)
无论您在onTabSelected
中运行的代码是什么,都可以转移到自定义方法中,并且可以在活动中保持活动的标签状态。
onTabSelected(int position, boolean update)
方法。传递false作为第二个参数会绕过您正在寻找的任何逻辑,以避免在以编程方式选择选项卡时运行。tab.select()
以更新TabLayout
之前,请致电onTabSelected(position, false)
以更新您在第一步中创建的有效标签字段,但不运行标签选择逻辑。然后当TabSelectedListener
触发时,它会短路,因为activeTabPosition
字段已经设置为更新后的位置。这是新方法的骨架。
private void onTabSelected(int position, boolean update) {
if (position == activeTabPosition) {
return;
}
activeTabPosition = position;
if (update) {
// Your tab selected logic
}
}