Mik*_*keS 18 android android-fragments android-nested-fragment
Back Stack是否支持与Android中嵌套片段的交互?
如果是的话,我做错了什么?在我的实现中,后退按钮完全忽略了我将此事务添加到后台堆栈的事实.我希望它不是因为嵌套片段的问题,而是我做错了什么.
以下代码位于我的一个片段中,用于将新片段与当前显示的任何嵌套片段交换:
MyFragment fragment = new MyFragment();
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
ft.setCustomAnimations(R.animator.slide_in_from_right, R.animator.slide_out_left, R.animator.slide_in_from_left, R.animator.slide_out_right);
ft.addToBackStack(null);
ft.replace(R.id.myFragmentHolder, fragment);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
la_*_*rre 30
我有同样的问题,我想嵌套片段,并为每个嵌套片段保留一个后栈.
但是......似乎这个案例不是由v4支持库处理的.在库中的FragmentActivity代码中,我可以找到:
public void onBackPressed() {
if (!mFragments.popBackStackImmediate()) {
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
mFragments代表活动的FragmentManager,但似乎这个管理器不会将pop"传播"给子管理器.解决方法是手动调用子管理器上的popBackStackImmediate(),就像从FragmentActivity继承的活动中一样:
private Fragment myFragmentContainer;
@Override
public void onBackPressed() {
if (!myFragmentContainer.getChildFragmentManager().popBackStackImmediate()) {
finish(); //or call the popBackStack on the container if necessary
}
}
Run Code Online (Sandbox Code Playgroud)
可能有更好的方式和更自动化的方式,但对于我的需求,它是好的.
归档时间: |
|
查看次数: |
18965 次 |
最近记录: |