我有一个ViewPager和Tablayout,显示第n个项目。标签填充了正确的页面标题,ViewPager包含的片段显示正确的罚款,除了选定的标签没有与ViewPager当前项目同步。
所选的Tab位置比Viewpager当前项的位置少1。这是Viewpager适配器。
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
public ViewPagerAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int position) {
Recipe selectedRecipe = getRecipeList().get(position);
return RecipeDetailFragment.newInstance(selectedRecipe.getId);
}
@Override
public int getCount() {
return .getRecipeList().size();
}
@Override
public CharSequence getPageTitle(int position) {
Recipe selectedRecipe = .getRecipeList().get(position);
String title = selectedRecipe.getTitle();
return title ;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
下面是我如何设置ViewPager
private void setupViewPager() {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
}
输出如下所示
**编辑1:**我认为问题与如何调用ViewPager的getItem方法有关,以下是10个项目的左右滚动日志
2条答案
按热度按时间uelo1irk1#
除了在片段中使用静态变量,您还可以在片段中使用如下所示的公共函数。
加了
而不是这样
在片段中添加公共函数,
mdfafbf12#
最后,这是我如何同步ViewPager选定项与Tablayout选定选项卡。
然后,我从两个地方调用了此方法,第一个是在设置Viewpager时
然后是setItem中的第二个
它的作品,我仍然不能理解为什么这些不是默认同步的!