我有一个分成几个片段的表格。我用每个片段调用:
final FragmentManager fm = getSupportFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
if(fragment.equals(this.formOne) || fragment.equals(this.formTwo)) {
ft.setCustomAnimations(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
}
ft.replace(R.id.fragForm, fragment);
ft.addToBackStack(null);
ft.commit();
当我点击后退按钮时,它会跳过上一个片段,然后返回活动但屏幕空白。
例如,我有3个片段:A - B - C
如果我去C并希望回到之前的活动,我点击后退按钮,我就在B上,我再次点击,我在A上,当我再次点击时,我有一个空白屏幕,我需要再次单击以返回上一个活动。
我不明白为什么我的活动上有这个空白屏幕。
我在开发者文档中不明白这一点:
注意:您不应该在后台堆栈中添加事务 交易用于水平导航(例如切换标签时) 或者在修改内容外观时(例如调整时) 过滤器)。有关何时返回导航的更多信息 适当的,请参阅导航设计指南。
如果我们不能使用它,那么解决方案是什么?
答案 0 :(得分:5)
添加片段A时,不要将其添加到Backstack中。
ft.add(R.id.fragForm, fragmentA);
ft.commit();
ft.replace(R.id.fragForm, fragmentB);
ft.addToBackStack(null);
ft.commit();
ft.replace(R.id.fragForm, fragmentC);
ft.addToBackStack(null);
ft.commit();
答案 1 :(得分:1)
如果您不必导航到以前的片段,请不要将其添加到backstack
删除此
ft.addToBackStack(null);