【问题标题】:Updating offscreen fragments in a ViewPager在 ViewPager 中更新屏幕外片段
【发布时间】:2013-07-01 01:13:58
【问题描述】:

我有一个包含三个片段的应用程序:Records、Chart 和 PieChart。这些片段存储在单个活动中的 ViewPager 中,用户可以在它们之间滑动。 Records 片段有一个表,用户可以在其中输入数据。当用户输入数据时,其他两个片段需要更新,因为它们引用了这些数据。最初,我希望片段在被滑动到时更新,但由于它们是可滑动的,我不能使用 onPause() 和 onResume() 因为 onPause() (因此 onResume())只有在选项卡被调用时才会被调用2+ 屏幕之外。所以我决定让 Records 片段向 Activity 发送一个回调,以告诉其他片段在 Records 片段更新时更新自己。我将所有片段保存在内存中,并且在应用程序进入后台之前它工作正常。当应用程序退出后台时,如果用户向表中输入数据,应用程序会崩溃,因为其他片段中的所有变量都为空。为什么会这样?我没有在我的应用程序的任何地方使用 saveinstancestate。我应该是吗?

【问题讨论】:

    标签: android android-fragments android-viewpager android-tabstrip


    【解决方案1】:

    从这里开始:

    http://developer.android.com/reference/android/app/Fragment.html

    您应该将支持每个 UI 组件的所有数据保存在 Fragment 的 onSaveInstance() 的 Bundle 中。然后在 onActivityCreated() 回调中,恢复数据。

    【讨论】:

    • 碎片呢?我什至可以将整个片段保存到一个包中吗?碎片中的数据正在被清除。一切,包括片段引用的视图,都是空的。
    • 查看编辑。抱歉,有一段时间没有使用 Fragments(或任何 Android 应用程序开发人员)了。
    • 看起来在活动中也需要做一些工作。这一切都在那个例子中。
    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多