相关疑难解决方法(0)

如果存在,如何从BackStack恢复Fragment

我正在学习如何使用片段.我有三个实例Fragment在类的顶部初始化.我将片段添加到这样的活动:

声明和初始化:

Fragment A = new AFragment();
Fragment B = new BFragment();
Fragment C = new CFragment();
Run Code Online (Sandbox Code Playgroud)

更换/添加:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, A);
ft.addToBackStack(null);
ft.commit();
Run Code Online (Sandbox Code Playgroud)

这些片段工作正常.每个片段都附加到活动,并保存到后台堆栈没有任何问题.

所以当我启动AC,然后B,堆栈看起来像这样:

| |
|B|
|C|
|A|
___
Run Code Online (Sandbox Code Playgroud)

当我按下"后退"按钮时,会B被摧毁并C恢复.

但是,当我A第二次启动片段时,它不会从后端堆栈中恢复,而是添加到后端堆栈的顶部

| |
|A|
|C|
|A|
___
Run Code Online (Sandbox Code Playgroud)

但我想恢复A并销毁它上面的所有碎片(如果有的话).实际上,我只是喜欢默认的后台堆栈行为.

我该如何做到这一点?

预期:( A应该恢复,顶部碎片应该销毁)

| |
| |
| |
|A|
___
Run Code Online (Sandbox Code Playgroud)

编辑:(由A - C建议)

这是我尝试的代码:

private void selectItem(int position) { …
Run Code Online (Sandbox Code Playgroud)

android android-fragments back-stack

140
推荐指数
2
解决办法
16万
查看次数

标签 统计

android ×1

android-fragments ×1

back-stack ×1