Android ViewPager+;FragmentStatePagerAdapter:需要知道何时显示片段(选中)

Android ViewPager+;FragmentStatePagerAdapter:需要知道何时显示片段(选中),android,fragment,fragmentpageradapter,Android,Fragment,Fragmentpageradapter,我正在使用连接到FragmentStatePagerAdapter的ViewPager。每个片段都包含一个listview。在这个列表视图中,我希望显示广告并调用分析服务器。我只想在用户导航到片段时进行这些调用(因此我不能在片段中使用onCreateView或onActivityCreated事件)。有什么活动我可以参加吗 更新 我意识到我获取当前片段的方式是有缺陷的 @Override public void onPageSelected(int page) { t

我正在使用连接到FragmentStatePagerAdapter的ViewPager。每个片段都包含一个listview。在这个列表视图中,我希望显示广告并调用分析服务器。我只想在用户导航到片段时进行这些调用(因此我不能在片段中使用onCreateView或onActivityCreated事件)。有什么活动我可以参加吗

更新 我意识到我获取当前片段的方式是有缺陷的

    @Override
    public void onPageSelected(int page) {
      this.currentPage = page;
      tabsAdapter.getItem(page);
    }
getItem(int位置)
实际上负责实例化片段,因此它将创建一个新的未附加片段(因此
getActivity()
返回null)。我想我会为我们提供一种方法,在这种方法中,我会保留一个片段的映射(
),当在pagerAdapter中调用destoryItem时,我会从映射中删除片段。

这样如何:


onPageSelected(int)
方法听起来像是做了你想做的事。

你是对的,最好的选择是这里的第二个解决方案:


因此,您的想法是正确的。

我尝试了这一点,但在本次事件中,如果我尝试启动数据任务,则需要getActivity()作为上下文,getActivity()将返回null如果您在问题中提到该要求,则会有所帮助:)。你能用一些示例代码来说明这个问题吗?我有点惊讶于onPageSelected会在onAttach之前被调用(此时getActivity()应该停止返回null)