【问题标题】:Get all fragments from backstack in order按顺序从 backstack 中获取所有 Fragment
【发布时间】:2012-03-19 15:18:04
【问题描述】:

我在我的应用项目中使用 Fragments。所有的片段都被添加到back stack

...
fragmentTransaction.addToBackStack(null);
...

稍后,按顺序从back stack中获取所有片段的正确方法是什么?

【问题讨论】:

    标签: android android-fragments back-stack


    【解决方案1】:

    使用getBackStackEntryCount(),您可以遍历返回堆栈并使用getBackStackEntryAt() 方法获取每个Fragment。

    编辑: 根据 cmets 中的一些讨论,建议您手动存储已添加到 backstack 的 Fragment 列表,并将它们持久保存到 SharedPreferences 中。然后,您可以在应用程序启动时读取此列表,并重新加载这些片段。

    【讨论】:

    • 但是我在调​​用 getBackStackEntryAt() 时得到了“BackStackEntry”,我怎样才能得到片段?我需要后堆栈中的片段。
    • 抱歉,您似乎无法使用这些方法。您需要自己手动保留引用,尽管 BackStackEntry 的文档确实声明您不应该保留这些引用。 developer.android.com/reference/android/app/…
    • 请问您要达到什么目的?可能有更好的解决方案
    • 当服务器响应不正确时,我的应用程序将被终止。如果用户再次启动应用程序,我的应用程序应该显示之前显示的片段,所以我的应用程序需要在本地持久化片段回栈信息,我需要按顺序从回栈中获取片段。
    • 您应该手动存储您当前打开的所有片段的列表。如果您知道应用程序何时会被终止,那么您将能够将列表持久保存到 SharedPreferences 中,然后在应用程序再次启动时检索它们。每次您向后台堆栈添加或删除某些内容时,请确保将引用添加到您的列表中。为了更简单,有一个常量类,它为每个片段分配一个 ID(类型为 int),然后您将能够交叉引用您已加载的片段。
    猜你喜欢
    • 2013-09-10
    • 1970-01-01
    • 2021-01-03
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 2023-01-06
    相关资源
    最近更新 更多