gpt4 book ai didi

android - fragment backstack 替换问题

转载 作者:行者123 更新时间:2023-11-30 01:33:05 32 4
gpt4 key购买 nike

我在后台堆栈中有 fragment ,这些 fragment 是使用 addtobackstack 函数添加的。当我在不使用 addtobackstack 函数的情况下添加一个 fragment 然后按下后退按钮时,backstack 会返回到错误的 fragment 。

例如:

fragment A 使用 addtobackstack 替换

fragment B 使用 addtobackstack 替换

不使用 addtobackstack 替换 fragment C

fragment D 使用 addtobackstack 替换

当我在 Fragment D 中并按下后退按钮时,我将转到 Fragment A。但我必须转到 Fragment B。

我该如何解决?

谢谢,

最佳答案

将此代码放入 Activity 中然后尝试。

Fragment 后跟 Activity,因此当您将带有 addToBackStack() 的 fragment 与标记一起使用或传递 null 时,将在 FragmentManager 的帮助下将 fragment 添加到堆栈中。

addToBackStack() 不是必需的。注释此代码或传递 null

    FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction();
fragmentTransaction .replace(R.id.fragment_container, YouNextFragment);
fragmentTransaction .addToBackStack(null);
fragmentTransaction .commit();

当您在 Activity 中按下后退按钮时 FragmentManager自动弹出最新添加的 fragment 。

    @Override
public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case android.R.id.home:
if (getFragmentManager().getBackStackEntryCount() ==0) {
finish();
}else{
getFragmentManager().popBackStack();
}
break;

default:
break;
}

return super.onOptionsItemSelected(item);
}

关于android - fragment backstack 替换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35505888/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com