Создайте один абстрактный фрагмент, который расширяет фрагмент. как это
public abstract BaseChildFragment extends Fragment{
public void onViewPagerPagechange();
}
Расширяет все дочерние фрагменты (JobsFragment, NewJobsFragment и т. Д.), Расширяет BaseChildFragment,
На вашем адаптере пейджера добавьте следующий код.
LruCache<Integer,BaseChildFragment> cache = new LruCache<>(4);
public BaseChildFragment getBaseChildFragment(int position){
return cache.get(position);
}
@Override
public Fragment getItem(int position) {
if (position == JOB) {
if (Utility.isEmpty(fragmentProfile)) {
jobsFragment = JobsFragment .getInstance()
cache.put(position,fragmentProfile );
}
return jobsFragment ;
} else if (position == NEW_JOB) {
......
return fragment;
}
return null;
}
На вашем фрагменте, который имеет вид пейджера AddpageChangeListener, подобный этому
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
// optional
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
// optional
@Override
public void onPageSelected(int position) {
BaseChildFragment fragment = adapter.getBaseChildFragment(position);
fragmeng.onViewPagerPagechange();
//you can invoke presenter logic by calling this method on each child presenter will call your filter (its upto you)
}
// optional
@Override
public void onPageScrollStateChanged(int state) { }
});
Это вызовет ваш метод ChildFragment onViewPagerPagechange();
. где вы можете загрузить свои дочерние фрагменты. Вы также можете получить выбранный фрагмент. и самый простой способ заключается в том, что вы можете получить текущий фрагмент и проверить с помощью getInstance();