0

假设我们有一个应用程序,其中包括:

  1. ActionBarActivity 以 ViewPager 作为其布局(用于片段之间的水平滑动)调用 MainActivity,其中包含下面详述的两个片段。
  2. SettingFragment 控制 ContentFragment 的 Controls 的可见性(例如当我们在 Setting Fragment 中的 visibilitySpinner 中选择 2 时,它将使 ContentFragment 上的 EditText1 和 EditText2 可见,而 EditText3 的可见性保持为 GONE), SettingFragment 位于 ViewPager 的第一页。
  3. ContentFragment 由 3 个 EditText 组成。

那么activity第一次创建的时候,会不会按顺序创建fragment呢?(SettingFragment > ContentFragment)还是会同时创建?更准确地说,更新 ContentFragment 中控件的可见性的最佳事件是什么?

我想到的是在 SettingFragment 中创建一个按钮,然后在 onClick 事件上更新 ContentFragment 控件的可见性。这工作正常,但我认为如果我尝试使用相同的方法一次更新多个片段的可见性,我会得到 NullPointerException(因为 AFAIK ViewPager 只创建我们当前“活动”片段的上一页和下一页,CMIIW)。

谁能给我一个更清晰的见解?非常感谢。

4

1 回答 1

0

ViewPager 并没有真正设计为在页面之间进行交互。它旨在缓存和执行良好,同时显示相当不变的内容。话虽如此,有一些解决方法涉及每次用户更改页面时重新加载片段,看看:

作为 ViewPager 的一部分更新 ListFragment 中的数据

另一方面,回答你关于 ViewPager 的问题只保持前一个和下一个片段处于活动状态,你可以这样控制:

mViewPager.setOffscreenPageLimit(2);

参考: 防止 ViewPager 破坏屏幕外视图

于 2014-05-28T03:32:48.243 回答