我有一个标签式活动1到5.如果我从3移动到5然后在后退按下我想从5切换回3,即在背面按下我想要回到上一个标签 . 请帮忙
使用以下代码来实现它 . (代码也经过测试 . )
1.Initialise一个整数列表和一个布尔值;
private boolean isBackPressed = false; private boolean isBackPressedOnce = false; private List<Integer> tabsInBack = new ArrayList<>();
2.现在你的onTabSelectedListener必须是这样的
tabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { if(!isBackPressed){ tabsInBack.add(tab.getPosition());} else { isBackPressed = false;} } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } });
3(i) . 现在你的onBackPressed()函数必须是,(一个标签然后关闭)
@Override public void onBackPressed() { isBackPressed = true; if (tabsInBack != null && tabsInBack.size() > 0) { if (tabs.getSelectedTabPosition() == tabsInBack.get(tabsInBack.size() - 1)) { tabsInBack.remove(tabsInBack.size() - 1); } if (tabsInBack != null && tabsInBack.size() > 0) { tabs.getTabAt(tabsInBack.get(tabsInBack.size() - 1)).select(); tabsInBack.remove(tabsInBack.size() - 1); } else { super.onBackPressed(); } } else { super.onBackPressed(); } }
3(ii) . 现在你的onBackPressed()函数必须是,(返回所有选中的选项卡,然后关闭)
@Override public void onBackPressed() { isBackPressed = true; if (tabsInBack != null && tabsInBack.size() > 0) { if (tabs.getSelectedTabPosition() == tabsInBack.get(tabsInBack.size() - 1)) { tabsInBack.remove(tabsInBack.size() - 1); } if (tabsInBack != null && tabsInBack.size() > 0) { tabs.getTabAt(tabsInBack.get(tabsInBack.size() - 1)).select(); tabsInBack.remove(tabsInBack.size() - 1); if(isBackPressedOnce ) { super.onBackPressed(); } else { isBackPressedOnce = true; } } else { super.onBackPressed(); } } else { super.onBackPressed(); } }
让我知道它是否有帮助 .
1 回答
使用以下代码来实现它 . (代码也经过测试 . )
1.Initialise一个整数列表和一个布尔值;
2.现在你的onTabSelectedListener必须是这样的
3(i) . 现在你的onBackPressed()函数必须是,(一个标签然后关闭)
3(ii) . 现在你的onBackPressed()函数必须是,(返回所有选中的选项卡,然后关闭)
让我知道它是否有帮助 .