这个报道的bug给我带来了问题;https://issuetracker.google.com/issues/183847283
当与FragmentStateAdapter结合使用时,ViewPager2. setCurrentItem并不总是有效。TabLayout正确更改(如果您有),但ViewPager2本身并未显示正确的页面。
有人找到变通方法了吗?
我有一个类似的问题,如果不一样的话。解决方案是以特定的顺序更改片段
/选项卡
/页面
。
FragmentStateAdapter
片段的更改。TabLayout
应该在post
selectTab
ViewPager
应该在TabLayoutpost
中的post
下调用setCurrentItem
以selectTab
。这可能是矫枉过正,但它对我有用。
例子
//or some other notify depending on your use case.
fragmentStateAdapter.notifyItemInserted(position);
tabLayout.post(()->{
tabLayout.selectTab(tabLayout.getTabAt(position));
viewPager2.post(()->{
viewPager2.setCurrentItem(position);
//I noticed on older devices like API 19
//the viewPager wouldn't complete transformations
//so we call this.
viewPager2.requestTransform();
});
});
viewPager.setCurrentItem(tab.getPosition());
if (tab.getPosition()==0||tab.getPosition()==1||tab.getPosition()==2||tab.getPosition()==3){
pagerAdapter.notifyDataSetChanged();
}