FragmentPagerAdapter getItem wrong position

白昼怎懂夜的黑 提交于 2019-12-01 16:30:40

Ok, I've found the solution. First of all, the getItem "int position", doesn't indicate current display fragment. To display 3 or more tabs, without unload firts fragment You must added this line:

mViewPager.setOffscreenPageLimit(3);

End of story...

Yueh-Ming Chien

You just need:

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        Log.d("test", "position = " + position);
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
});

The position in onPageSelected is what you want.

I had had the same problem, and I used fragment inside each tabs; So instead of

mViewPager.setAdapter(new MainTabs(getFragmentManager()));

use this one:

mViewPager.setAdapter(new MainTabs(getChildFragmentManager()));
Jim Ovejera

In case anyone else has this issue, I solved it by not using the position given. Instead, I get a List of Fragment with getSupportFragmentManager, loop through, and check if the current Fragment is instanceof my desired Fragment.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!