AndroidのViewPagerで最初にページが表示されるときにonPageSelectedが呼ばれない
ViewPagerを使って画面をスワイプして複数の画像が見られるようにしたいと思っています。
そのときに最初に表示するページを設定したいのですが、
onCreate内でsetCurrentItemを使うとonPageSelectedが呼ばれないのでFragmentを設定できません。
onPageSelectedを呼ぶためにはどうしたらいいのでしょうか?
imagePager = (ViewPager) findViewById(R.id.imagePager);
ImagePagerAdapter pagerAdapter = new ImagePagerAdapter(getSupportFragmentManager());
imagePager.setAdapter(pagerAdapter);
imagePager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {
}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
public void onPageSelected(int position) {
ImagePagerAdapter adapter = (ImagePagerAdapter) imagePager.getAdapter();
Fragment currentFragment = adapter.findFragmentByPosition(imagePager, position);
View fragmentView = currentFragment.getView();
//fragment内のViewを設定する
}
});
//ページをintentで渡された位置に変える
imagePager.setCurrentItem(currentPos);
.
class ImagePagerAdapter extends FragmentPagerAdapter {
public ImagePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return new ImageContentFragment();
}
@Override
public int getCount() {
return imageList.size();
}
public Fragment findFragmentByPosition(ViewPager viewPager, int position) {
return (Fragment) instantiateItem(viewPager, position);
}
}