【问题标题】:Remove fragments that are not put on backstack移除未放入 backstack 的碎片
【发布时间】:2012-05-03 22:13:33
【问题描述】:

我的简单布局只有一个片段占位符:

<FrameLayout
   android:id="@+id/fragment_placeholder"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
  />

我首先在这个占位符中添加一个第一个片段

fragmentTransaction.add(R.id.fragment_placeholder, firstFragment, "first"); //I did not put to backstack

我有一个第二个片段,它替换了上面的片段并把它放回堆栈

FragmentManager fragMgr = getSupportFragmentManager();
FragmentTransaction fragTrans = fragMgr.beginTransaction();

//initialize an fragment instance
Fragment secondFragment = initSecondFragment(); 

//replace with the fragment 
fragTrans.replace(R.id.fragment_placeholder, secondFragment, "second");

//Add fragment transaction to back stack
fragTrans.addToBackStack(null);

//commit the transaction
fragTrans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragTrans.commit();  

后来我有一些片段替换了之前的片段,但是没有放在 backstack 上

似乎对于那些没有放入backstack的片段会一直显示在屏幕上,按下后退按钮对它们没有影响。

那么,如何在我的应用中找到那些不在 backstack 上的片段,以及如何将它们从屏幕上移除?

【问题讨论】:

    标签: android android-layout android-intent android-emulator android-fragments


    【解决方案1】:

    如何在我的应用中找到那些不在后台堆栈中的片段

    在您的FragmentManager 上致电findFragmentById()findFragmentByTag()

    如何将它们从屏幕上移除?

    使用remove()FragmentTransaction

    【讨论】:

    • 如何检查片段是否被添加到Backstack??
    • @KK_07k11A0585:这确实属于一个单独的 StackOverflow 问题。话虽如此,如果您将标签传递给addToBackStack(),您可以通过getBackStackEntry() 上的getBackStackEntry() 等方法迭代返回堆栈条目,以找到具有所需标签的条目。片段本身不在后栈中;片段 事务 是。
    • 我明白了。但我有以下场景\n 其中有 3 个片段 FragmentA1、FragmentA2、FragmentA3。我已将 FragmentA1 和 FragmentA2 添加到 backstack 但未添加 FragmentA3。所以,如果我从 FragmentA3 按下返回按钮,那么它正在完成 FragmentA2 并且它正在覆盖 FragmentA1 中的 FragmentA3。请帮我解决这个问题
    • @KK_07k11A0585:请随意打开一个新的 StackOverflow 答案来解释您的问题,看看是否有人可以提供帮助。
    • 我遇到了完全相同的问题,现在作为问题提出:stackoverflow.com/questions/22865438/… 和 Google 问题:code.google.com/p/android/issues/detail?id=68160
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多