我无法在FragmentStateAdapter中调用instantiateItem元素以供ViewPager2使用。

5

当我切换到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();
    }
}

1
你有查看过FragmentStateAdapter的文档吗? - Mike M.
1
我处于同样的情况,想知道在 FragmentStateAdapter 中用于与 viewPager2 一起工作的 instantiateItem 的替代方法是什么。正如 @MikeM. 建议的那样,我查阅了文档,但并没有找到任何有用的信息。 - waseefakhtar
1个回答

0

在ViewPager2中,我尝试了很多次,但无法找到与instantiateItem元素具有相同功能的方法。因此,我创建了一个Fragment列表,用于接受ViewPager片段元素。你可能会问,你把它们放在哪里?当FragmentStateAdapter类调用createFragment()方法时,我将它们推入列表中。之后,我可以通过主Fragment的get方法访问它们。


如果不从列表中删除片段,这听起来并不是一个好的解决方案。RecyclerView.Adapter.onViewRecycled(VH)可能是删除的一个很好的起点。 - Dominikus K.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接