【问题标题】:Restore Data in FragmentActivity after back button Pressed按下后退按钮后恢复 FragmentActivity 中的数据
【发布时间】:2013-04-19 18:26:27
【问题描述】:

我已经阅读了很多关于在 FragmentActivity 中恢复数据的内容,但在我的情况下没有任何效果。我尝试了很多方法来做到这一点,但都没有成功。

我有一个 FragmentActivity,其中包含一个带有 6 或 7 个片段的 ViewPager。这些片段中的每一个都包含一个 ListView。这些 ListView 中的数据是从 web 检索到的。

我可以在片段中选择 ListView 的一个项目来打开一个显示所选项目详细信息的新活动。

当我回到我的 FragmentActivity 时,我不想从 Web 检索新的时间数据,而是从捆绑包或其他允许我立即显示数据的东西中获取它。

我尝试了 getLast(Custom)NonconfigurationInstance() 但它仅在实际配置发生更改时调用(例如屏幕方向)。我还尝试了 FragmentActivity 中的 onSavedInstanceState,在 Fragment 中,没有调用 super 方法......我总是在我的 onCreate/onCreateView 中得到一个空的 savedInstanceState 包。

我没有给你的代码,因为我回到零。

有什么想法吗?

【问题讨论】:

  • 第一次获取数据时以持久方式(首选项、文件、数据库)保存数据。
  • 我想过,但我认为这是一个不好的做法:应该使用 Preferences 来保存持久数据;即使应用程序关闭,数据也是持久的。但我暂时没有其他方法可以做到这一点,所以我会试试这个。
  • 或者您可以将其保存在应用程序级别并在应用程序存在时将其保存在内存中。当你回到 Activity 时,看看你是否有可用的数据(也许有一个时间戳,看看你是否不应该刷新它,即使它存在),如果它不可用,请检索它。

标签: android-fragments bundle android-fragmentactivity data-retrieval


【解决方案1】:

好的,我找到了解决方案,但我讨厌它!反正...

当我在我的片段列表中选择一个项目时,我将我想要恢复的数据放入 ActivityA 中,并使用实现可序列化的自定义类,然后关闭 ActivityA。 ActivityB 正在启动。当我关闭 ActivityB 时,我将要恢复的数据放在 ActivityA 中。我检查我的数据是否不为空(如果我不是来自 ActivityB,它可以为空),如果不是,我可以在没有网络连接的情况下填充我的片段和列表。

这是解决我的问题的一种非常糟糕的方法,但我真的不知道为什么“savedInstanceState”方法在这种情况下不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多