ven*_*enu 49 android android-fragments
嗨如何使用下面的逻辑清除片段后堆栈它不工作...
for(int i = 0; i < mFragmentManager.getBackStackEntryCount(); ++i) {
mFragmentManager.popBackStack();
}
Run Code Online (Sandbox Code Playgroud)
帮我..
dra*_*ula 114
试试这个
mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
小智 73
上面的答案几乎是正确的,但你需要在片段后面列表中保护,因为它可以是空的:
private void clearBackStack() {
FragmentManager manager = getSupportFragmentManager();
if (manager.getBackStackEntryCount() > 0) {
FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 17
while (getSupportFragmentManager().getBackStackEntryCount() > 0){
getSupportFragmentManager().popBackStackImmediate();
}
Run Code Online (Sandbox Code Playgroud)
Bla*_*elt 15
一种方法是标记,backstack以及何时清除它
mFragmentManager.popBackStack("myfancyname", FragmentManager.POP_BACK_STACK_INCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
其中,"myfancyname"应符合您所使用的字符串addToBackStack.例如
Fragment fancyFragment = new FancyFragment();
fragmentTransaction.replace(R.id.content_container, fancyFragment, "myfragmentag");
fragmentTransaction.addToBackStack("myfancyname");
Run Code Online (Sandbox Code Playgroud)
的backstack的名字和片段的标签名称可以相同,但没有约束在这方面
从文档中
如果已设置,并且已提供后备栈条目的名称或ID,则将使用所有匹配的条目,直到找到不匹配的条目或达到堆栈的底部.否则,将删除所有条目,但不包括该条目.
如果您不想为后台堆栈使用名称,则可以使用第一个参数
mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
这有点晚了但我自己也遇到了这个问题.你可以做:
FragmentManager manager = getFragmentManager();
FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
非常自我解释; 您只需获取第一个条目,获取其ID,然后弹出所有内容,包括具有该ID的条目.
| 归档时间: |
|
| 查看次数: |
71479 次 |
| 最近记录: |