在我迁移到viewPager2之前,我以这种方式获取当前片段,以使用其中的方法:
Fragment myFragment = (Fragment) viewPager.getAdapter().instantiateItem(viewPager, viewPager.getCurrentItem());
但是,现在我在instantiateItem上得到一个错误:
无法解析方法“text.xml”,无法解析方法“text.xml”
我不使用Tag在ViewPager适配器中创建片段:
private class MyPagerAdapter extends FragmentStateAdapter {
public MyPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
super(fragmentManager, lifecycle);
}
@NonNull
@Override
public Fragment createFragment(int position) {
return ScreenFragment.newInstance(position);
}
@Override
public int getItemCount() {
return 5;
}
}
那么,我如何才能在viewPager2中获得当前片段?
3条答案
按热度按时间q5iwbnjs1#
您可以使用HashMap来执行此操作:
然后以这种方式获取当前片段:
i1icjdpr2#
@Zain提供的完美而简单的解决方案。
我只想再补充一点:
您必须通过活动片段管理器示例调用childFragmentManager。
wnavrhmk3#
也许使用ViewPager2的一种更简单的方法是执行以下操作
childFragmentManager.fragments[viewPager.currentItem - 1]
这将给予您能够访问当前片段。