2015-11-20 118 views
1

我有一个使用ViewPager和FragmentPagerAdapter来设置三个片段的活动。现在,当活动加载时,我发出一个网络请求,并计划在网络回复中更新三个片段中的视图。现在我很难从主要活动中设置这些观点。我尝试过的(并且非常失败)是:Android在视图寻呼机中的父活动中设置视图片段

  • 在Fragment Class中创建一个setter以设置视图数据。在片段onViewCreated方法中,我保存文本视图的全局视图引用,然后尝试从网络负载上的Activity调用该设置器。 textviews是NULL,即在调用setter时甚至不会实例化。
  • 在Activity中创建一个获取器,以从片段onViewCreated中获取数据。但在这种情况下,由于网络请求未完成,getter不会找到值!

任何提示如何进行?我有三个片段与相关的数据,并希望从一个点控制他们的视图设置。我不想从每个片段进行单独的网络调用。

回答

1
  • 在Fragment Class中创建一个setter以设置视图数据。在片段onViewCreated方法我保存 textviews的全局视图引用,然后尝试从网络 负载上的活动调用该setter。文本视图为NULL,即当调用者调用 时甚至不会实例化。

你做得对。

为什么这些textviews有NULL值是关于您在调用setter方法时使用的片段引用。

简而言之:此功能添加到您的FragmentPagerAdapter实现

public Fragment getFragmentByPositionUsingTag(int position) { 
    Fragment fragment = fm.findFragmentByTag("android:switcher:" + R.id.viewPager + ":" + position); 

    return fragment; 
} 

,并尝试使用它返回到调用该方法的参考。 (有关更多信息,SO上有很多很好的答案)。

+0

真棒。非常感谢!顺便说一句,有一种方法可以通过标题而不是位置来获取片段吗? –

+0

虽然我面临一个问题,正如我所说我有三个片段,所以当我滑动到其他片段,然后回到第一个设置文本消失,并且findFragmentByTag返回null。是因为片段内部分离吗? –

+0

创建两个阵列列表来存储片段的引用和标题。 1.您可以将位置连接到标题2.如果findFragmentByTag返回null,则尝试使用arraylist中的引用(但只有当findFragmentByTag返回null时)。试用它 –

相关问题