我正在使用只有一个片段的视图寻呼机。 我正在这样做,因为页面的基本布局将保持不变,只有一些细节,如文本视图和图像会改变,所以我重新使用相同的片段 视图寻呼机中的页面。
问题是我在何处以及如何将信息传递给我当前所在的片段(例如:第3页)。一旦片段具有此信息,它就能够调整其视图/布局并显示以下信息。
有人可以帮忙吗?感谢。
答案 0 :(得分:2)
当您使用以下方式动态地将片段添加到viewpager中时:
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();
}
}
将适配器的实例作为ViewPager的OnPageChangeListener()附加。
像这样mPager.setOnPageChangeListener(myParentPagerAdapter);
答案 1 :(得分:0)
在创建片段后保留片段的实例或使用
MyFragment myFrag = (MyFragment)getFragmentManager().findFragmentById(r.id.myfragment);
通过其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);
}
});