Dan*_*cek 5 android fragment back-stack fragmentmanager
简单的问题,但似乎无法回答...如何清除fragmentManager后栈而不弹出片段?
我这样理解:
后栈条目=使用addToBackStack命令预先保存的事务列表.例如:"将片段1替换为片段2".
popBackStack =最后保存的transatcion反向.例如:"将片段2替换为片段1".
假设我做了第一笔交易:F1-> F2并将此交易添加到后台.当我按下后退按钮时,F2-> F1将会发生.
好的但是..
我改变了主意,想要清理后面的堆栈.我希望用户使用F2片段但是当他/她按下后退按钮时,Activity应该关闭,就像后面的堆栈是空的一样.
我需要这样的东西:
for(int i=0;i<getFragmentManager().getBackStackEntryCount();i++){
getFragmentManager().getBackStackEntryAt(i).remove();
}
Run Code Online (Sandbox Code Playgroud)
编辑 我试图向复杂的情况提出简单的问题,我得到简单的答案;)Abhishek Patel的答案非常好,但它不是我想要的.仍然是一个很好的答案.
只是为了澄清: android中的后台堆栈不是完全可编辑的列表,如:
我们不能做"删除交易3"来做:
我们无法清除所有后端堆栈并保持最后一个可见的碎片活着.
我们可以将backstacks记录删除到某个位置,例如:"删除所有事务到事务2"以获得:
在屏幕上,您将看到交易2的效果.
为什么我需要这个?
我认为我可以创建一个片段,它将是"主要片段".这个主要片段将使用一个接口来告诉它现在显示的任何活动,现在显示这个boss片段,以及之前发生的任何事情 - 不再重要了.
(F) - 片段,(A) - 活动
(F) - 嘿老兄.我是老板,我可见并且依附于你.请为我清理你的背包,但保留我的交易,这让我来到这里.
(A) - 对不起男人......你应该在交易前告诉我清理我的背包,这样我就可以在新的背包上添加你的交易了.
试试这可能会有所帮助
public void clearBackstack() {
BackStackEntry entry = getSupportFragmentManager().getBackStackEntryAt(
0);
getSupportFragmentManager().popBackStack(entry.getId(),
FragmentManager.POP_BACK_STACK_INCLUSIVE);
getSupportFragmentManager().executePendingTransactions();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9383 次 |
| 最近记录: |