gpt4 book ai didi

android - addToBackStack 后的 popBackStack() 不起作用

转载 作者:IT老高 更新时间:2023-10-28 22:20:18 49 4
gpt4 key购买 nike

我的项目包含两个 fragment :

  • FragmentA : 应用启动时默认加载的 fragment
  • FragmentB : 当点击一个按钮时替换 fragmentA

这是我的主要 View 的 XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<fragment
android:id="@+id/main_fragment_container"
android:name="fragmentA"
android:layout_width="match_parent"
android:layout_height="match_parent">
</fragment>

</LinearLayout>

当我希望用 FragmentB 替换 FragmentA 时,我使用以下代码:

FragmentTransaction fragmentTransaction = getSupportFragmentManager()
.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.main_fragment_container, new FragmentB());
fragmentTransaction.commit();

此代码运行良好。我的 FragmentA 被新的 FragmentB 取代。但是当单击后退按钮时,我希望使用 popBackStackImmediate()FragmentB 替换为 FragmentA

这是我使用的代码:

if (getSupportFragmentManager().getBackStackEntryCount() > 0){
boolean done = getFragmentManager().popBackStackImmediate();
fragmentTransaction.commit();
}

函数 popBackStackImmediate 总是返回 false 并且 FragmentB 仍然在前台。

当我调用 popBackStackImmediate 时,为什么 FragmentA 没有替换 FragmentB?有人有办法解决我的问题吗?

提前致谢

最佳答案

您使用 getSupportedFragmentManager()FragmentA 替换为 FragmentB。但是您在 getFragmentManager() 上调用 popBackStack()

如果您将 Fragments 添加到 android.support.v4.app.FragmentManager 您还必须在同一 FragmentManager< 上调用 popBackStack()/

这段代码应该可以解决问题:

if (getSupportFragmentManager().getBackStackEntryCount() > 0){
boolean done = getSupportFragmentManager().popBackStackImmediate();
}

关于android - addToBackStack 后的 popBackStack() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21156153/

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