【发布时间】:2014-05-17 00:32:50
【问题描述】:
我有一个Activity,里面有一个Fragment。在这个 Fragment 中,我有一个 ViewPager 来分页 Fragments。这使得分页的 Fragment 成为 Activity 内 Fragment 的子代。基本上是这样的:
Activity
|
|
Fragment
|
(ViewPager)
| |
| |
Fragment Fragment
ViewPager 中的 Fragment 经常(看似随机)不会显示。我查看了 Hierarchy Viewer 中的视图层次结构,并注意到当发生这种情况时,子片段(在我的图片底部)在布局中,但子级的根视图 为零高度和零宽度(从那里到叶视图的层次结构树中的每个视图也是如此)。 ViewPager 确实有高度和宽度,但它页面的片段没有。
如果此时我旋转设备,我的孩子 Fragments 就会出现!
我不知道为什么会这样。我与 ViewPager 一起使用的适配器需要 FragmentManager,我通过调用 getChildFragmentManager() 来使用来自 Activity 内部 Fragment 的适配器。我觉得我正在做我应该做的一切,不知道接下来该看哪里。
更新:
有趣的是,如果我将适配器附加到 ViewPager 的代码放在 Runnable 中并将其发布到 Handler,则问题是 100% 可重现的。即
class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle b) {
super.onActivityCreated(b);
runPager = new Runnable() {
@Override
public void run() {
viewPager.setAdapter(adapter);
}
};
handler.post(runPager);
}
}
【问题讨论】:
标签: android android-fragments fragmentpageradapter android-nested-fragment