【问题标题】:How to get a fragment in FragmentStateAdapter如何在 FragmentStateAdapter 中获取片段
【发布时间】:2021-07-31 02:41:02
【问题描述】:
MyFragment currentFragment = (MyFragment) getSupportFragmentManager()
.findFragmentByTag("f"+pagerMainAdapter.getItemId(0));
currentFragment.testRun("Hello world");
我正在尝试从ViewPager 迁移到ViewPager2,但我不知道如何在ViewPager2 中获取片段。
【问题讨论】:
标签:
java
android
android-fragments
android-viewpager2
fragmentstatepageradapter
【解决方案1】:
从 ViewPager2 获取当前片段:
ViewPager2 有getCurrentItem(),它返回当前页码
所以,我们需要将每个页面片段链接到对应的页码。
但是我们可以通过它的id(item id)得到一个ViewPager2片段,所以第一步是让页面Ids等于相应的位置,这样做覆盖ViewPager2@987654326中的getItemId @。
@Override
public long getItemId(int position) {
return position;
}
然后获取当前片段:
int pageId = viewpager.getCurrentItem();
MyFragment currentFragment = (MyFragment) getSupportFragmentManager()
.findFragmentByTag("f" + pageId);