我正在学习如何使用片段.我有三个实例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)
这些片段工作正常.每个片段都附加到活动,并保存到后台堆栈没有任何问题.
所以当我启动A时C,然后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)