【问题标题】:I cannot call the instantiateItem element in FragmentStateAdapter for viewPager2我无法为 viewPager2 调用 FragmentStateAdapter 中的 instantiateItem 元素
【发布时间】:2019-09-13 14:51:14
【问题描述】:

当我切换到 viewPager2 时,我必须实现另一种类型的适配器(我使用 FragmentPagerAdapter,现在我使用 FragmentStateAdapter),现在我想调用具有旧适配器但它没有出现在新适配器中的 instantiateItem 元素.

public void onPageChange(int position) {
    //I cannot call instantiateItem from pagerAdapter
    Object object = pagerAdapter.instantiateItem(mMainViewPager,position);
    if (object instanceof MapFragment) {
        MapFragment fragment = (MapFragment) object;
        //fragment.setDevice(mDevice);
        //fragment.setLastTracking();
    }
    if (object instanceof DevicesFragment) {
        DevicesFragment fragment = (DevicesFragment) object;
        //fragment.refresh();
    }
}

【问题讨论】:

  • 我处于同样的情况,想知道 instantiateItem 的替代方案是什么,以便 FragmentStateAdapter 与 viewPager2 一起工作。正如@MikeM.所建议的那样,我检查了文档,但找不到任何有用的东西。

标签: java android android-viewpager2


【解决方案1】:

尽管许多人在视图寻呼机 2 中尝试过,但我无法使用与 instiateItem 元素具有相同功能的相同方法。相反,我创建了接受视图寻呼机片段元素的片段列表。您可以询问您将它们放在哪里进入这个列表。当片段状态适配器类调用 createFragment() 方法时,我进入了列表。之后,我从我的宿主片段中使用 get 方法到达

【讨论】:

  • 如果不从该列表中删除片段,这听起来也不是一个好的解决方案。 RecyclerView.Adapter.onViewRecycled(VH) 可能是一个很好的删除起点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 2020-06-12
  • 2021-01-12
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多