0

在我的FragmentActvitiy中,我使用的是ViewPager,我使用FragmentStatePagerAdapter填充它。

当我尝试访问片段视图以获取/更新视觉元素时,我得到一个空指针异常。我可以访问所有片段及其参数,但它们的视图返回 null。

MyPageAdapter adapter = (MyPageAdapter) pager.getAdapter();
Fragment fragment;

for (int i=0; i<15; i++) {
    fragment = adapter.getItem(i);
    View v = fragment.getView();
    System.out.println("--- FRAGMENT = " + fragment + "   VIEW = " + v);
}

我知道 FragmentStatePagerAdapter 删除视图以管理内存资源,并且我不应该访问 FragmentActivity 中的视图。

我的问题是存储/操作片段视觉元素的适当方式是什么?

我是否应该OnPageChangeListener在我的 ViewPager 类中实现并以某种方式将片段值存储到 SharedPreferences 而不是重新创建它们 - 在哪里?

4

1 回答 1

1

您的片段应该真正管理自己的视图。您可以做的是向您的片段添加方法,这些方法将提醒这些片段他们需要更新其视图。从FragmentStatePagerAdapter或 您的主机调用这些方法Activity。将所需的更改存储在 中Fragment,然后onCreateview(...)使用新数据或您想要更改的任何内容更新视图。

于 2014-01-03T17:26:38.933 回答