嗯,我认为标题是非常自我解释的。我的ViewPager
中有HomeActivity
,ViewPager目前包含5个片段。
当通过调用ViewPager onPageScrolled
看到其中一个片段时,我想根据HomeActiviy
中的某些条件修改当前显示片段内的一些视图。
经过一些研究,似乎我找不到一个好方法来沟通 HomeActivity - > ViewPager中的碎片。
我很容易解决了在ViewPager中的片段 - >方向的沟通HomeActivity 使用Interface
,但这个技巧似乎不适用于另一个方向。
我可以使用FragmentStatePagerAdapter
public Fragment getActiveFragment(int position){
return myFragmentsList.get(position);
}
但是,通过这样做,我必须将每个Fragment
投放到其班级MyFragment1
MyFragment2
MyFragment3
....
任何简单干净的方法来实现这一目标?以下是代码的相关部分:
mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (currentStatus == 1){
Fragment activeFrag = mPagerAdapter.getActiveFragment(mPager.getCurrentItem());
//here I would like to modify one of the 5 fragments
}
@Override
public void onPageSelected(int position) {}
@Override
public void onPageScrollStateChanged(int state) {}
});
答案 0 :(得分:3)
定义界面
interface FragmentListenerInterface {
public void onFragmentSelected();
}
在所有片段中实现此接口。改变fragment和viewpager之间的通信。编写一个方法来返回fragmentlistenerinterface而不是fragment。
public FragmentListenerInterface getActiveFragment(int position){
return (FragmentListenerInterface) myFragmentsList.get(position);
}
在此之后,在您的代码中
public void onPageSelected(int position) {
mViewPager.getActiveFragment(position).onFragmentSelected();
}
在每个片段中实施 onFragmentSelected() 。