Reputation: 7604
I am using a view pager with only one fragment. I am doing this as the basic layout of the page would remain the same, only some of the details like text view and images would change and so I am re-using the same fragment for each page in the view pager.
The question is that where and how do i pass the information to the fragment that I am currently on so and so page (ex: page#3). once the fragment has this information, it would be able to adjust its view/layout and display the following information.
could someone please help?
Thanks.
Upvotes: 0
Views: 3703
Reputation: 1129
When you add fragment dynamically into your viewpager use this way:
class ParentPagerAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {
private ArrayList<Fragment> fragments;
public ParentPagerAdapter(FragmentManager fm,
ArrayList<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
((MYFragment)this.fragments.get(position)).updateLayout();
}
}
Attach instance of adapter as ViewPager's OnPageChangeListener().
Like this mPager.setOnPageChangeListener(myParentPagerAdapter);
Upvotes: 2
Reputation: 73753
either keep an instance of the fragment once you create it or use
MyFragment myFrag = (MyFragment)getFragmentManager().findFragmentById(r.id.myfragment);
to get the fragment by its id
mPager.setOnPageChangeListener(new OnPageChangeListener(){
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int currentPage) {
MyFragment myFrag = (MyFragment)getFragmentManager().findFragmentById(r.id.myfragment);
myFrag.updateLayout(currentPage);
}
});
Upvotes: 0