【问题标题】:ViewPager + FragmentStatePagerAdapter : need to know when fragment is displayed (selected)ViewPager + FragmentStatePagerAdapter :需要知道何时显示片段(选中)
【发布时间】:2012-07-31 14:01:52
【问题描述】:

我正在使用插入到 FragmentStatePagerAdapter 的 ViewPager。每个片段都包含一个列表视图。在此列表视图中,我希望显示广告并调用分析服务器。我只想在用户导航到片段时进行这些调用(因此我不能在片段中使用 onCreateView 或 onActivityCreated 事件)。有没有我可以为此挂钩的事件?

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

    @Override
    public void onPageSelected(int page) {
      this.currentPage = page;
      tabsAdapter.getItem(page);
    }
寻呼机中的

getItem(int position) 实际上负责实例化片段,因此它会创建一个新的未附加片段(因此 getActivity() 返回 null)。我想我会采用一种方法来保留片段的地图 (<Position, Fragment>),当在 pagerAdapter 中调用 destoryItem 时,我将从地图中删除片段。

【问题讨论】:

    标签: android fragment fragmentpageradapter


    【解决方案1】:

    你是对的,最好的选择是这里的第二种解决方案: http://tamsler.blogspot.nl/2011/11/android-viewpager-and-fragments-part-ii.html

    所以你的想法是正确的。

    【讨论】:

      【解决方案2】:

      这个怎么样:

      http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html

      onPageSelected(int) 方法听起来就像你想要的那样。

      【讨论】:

      • 我试过这个,但是在这个事件中,如果我尝试启动我的数据任务,我需要 getActivity() 作为上下文,getActivity() 将返回 null
      • 如果您在问题中提到该要求会很有帮助:)。您可以使用一些说明问题的示例代码进行更新吗?我有点惊讶 onPageSelected 会在 onAttach 之前被调用(此时 getActivity() 应该停止返回 null)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      相关资源
      最近更新 更多