我有一个使用ViewPager和FragmentPagerAdapter设置三个片段的活动。现在,当活动加载时,我发出网络请求并计划在网络回复时更新三个片段中的视图。现在我很难从主要活动中设置这些视图。我尝试过的事情(并且非常失败)是:
onViewCreated
方法中,我保存textviews的全局视图引用,然后尝试从网络负载上的Activity调用该setter。 textview是NULL,即在调用setter时甚至没有实例化。onViewCreated
方法获取数据。但在这种情况下,getter将找不到网络请求未完成的值!任何提示如何进行?我有三个带有相关数据的片段,想要从一个点控制他们的视图设置。我不想从每个片段进行单独的网络调用。
答案 0 :(得分:1)
- 在Fragment Class中创建一个setter来设置视图数据。在片段
onViewCreated
方法中,我保存了全局视图引用 textviews,然后尝试从网络上的Activity调用该setter 加载。 textview是NULL,即在setter时甚至没有实例化 调用。
你做得对。
为什么这些textview具有NULL值是关于在调用setter方法时使用的片段引用。
简而言之:将此功能添加到FragmentPagerAdapter实现
public Fragment getFragmentByPositionUsingTag(int position) {
Fragment fragment = fm.findFragmentByTag("android:switcher:" + R.id.viewPager + ":" + position);
return fragment;
}
并尝试使用它返回的引用来调用该方法。 (有关更多信息,有很多很好的答案)。