Вам необходимо получить доступ к Fragments
, который вы используете в своем ViewPager
.
В этом ответе https://stackoverflow.com/a/39274141/1559852 я попытался объяснить, как изменить адаптер ViewPager's
o сделать фрагменты, которые вы используете в своем ViewPager
, доступными.
После того, как вы реализовали код в ссылке, вы сможете получить доступ к своим фрагментам и их представлениям.
Определите общедоступный метод для ваших фрагментов, как показано ниже:
public View getMyFragmentView(){
return this.mView();
}
Наконец, добавьте OnPageChangeLsitener
к вашему ViewPager
, как показано ниже.
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// Here's your instance
final YourFragment fragment =(YourFragment)yourPagerAdapter.getRegisteredFragment(position);
final View theViewYouWantToAccess = yourFragment.getMyView();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
Изменить: в вашем адаптере ViewPager вы можете зарегистрировать Fragment
в SparseArray
@Override
public Fragment getItem(int position) {
final YourFragment fragment = new YourFragment();
// Register your fragment to Sparse Array here
registeredFragments.put(position, fragment);
return fragment;
}
16.03.2017