我正在开发一个Android应用程序。我在标签导航模式下有一个操作栏,还有三个标签,用于调用要在frameview容器中替换的片段。
我的问题是:如果用户在一个选项卡中生成一个backstack,然后切换到另一个选项卡,如果在此状态下按下后退按钮,则会弹出backstack,但选项卡不会更改,导致重叠的片段(属于Tab1的backstack片段被弹出/添加,但Tab2仍被选中,片段也是如此)。
有没有办法让行动栏选项卡以与片段堆叠并行的方式对后退按钮作出反应?
答案 0 :(得分:2)
我通过将选项卡添加到我在addBackStack("MainTab");
中选择的名称(TabListener
)的背板来解决它,然后重写活动中的onBackPressed()
方法以识别何时a选项卡将在弹出Backstack时更改(通过获取最高BackStackEntry
的名称)并相应地使用actionBar.setSelectedNavigationItem(position)
。
答案 1 :(得分:1)
不使用addToBackStack()
,而是覆盖活动中的onBackPressed()
方法,以自定义返回键的行为方式。
答案 2 :(得分:0)
这对我有用:)
@Override
public void onBackPressed() {
if (viewPager.getCurrentItem() == 0) {
super.onBackPressed();
}else {
viewPager.setCurrentItem(0);
}
}