Кто-нибудь знает, что может заставить viewPager.getChildCount()
вернуть ноль? Я делаю findViewById
внутри onCreate, и там я также делаю viewPager.setAdapter
и tabLayout.setupWithViewPager(viewPager)
. Затем внутри onResume
я регистрирую счетчик детей и равен нулю! Почему это?
О, кстати, макет ViewPager не вызывает проблем, хотя getChildCount возвращает 0.
У меня создалось впечатление, что после вызова viewPager.setAdapter(pagerAdapter)
у ViewPager и PagerAdapter будет одинаковый счет. Но ясно, что это не так. Так почему это может произойти?
UPDATE
Вы, ребята, поднимаете очень хорошие моменты. Спасибо. Цель состоит в том, что я хочу перебирать все фрагменты в моем ViewPager/PagerAdapter. Когда я использую getChildCount
, он часто бывает 0 в неожиданные моменты времени, но когда он отличен от нуля, все работает нормально.
for(int i=0; i<viewPager.getChildCount(); i++){
MyFragmentInterface frag = pagerAdapter.getRegisteredFragment(i);
. . .
}
Однако, когда я использую viewPager.getAdapter().getCount()
, значение всегда совпадает с pagerAdapter.getCount()
. Но я, как правило, получаю исключение NullPointerException, потому что, видимо, фрагментов еще нет.
for(int i=0; i<viewPager.getAdapter().getCount(); i++){
MyFragmentInterface frag = pagerAdapter.getRegisteredFragment(i);
. . .
}
ANSWER
Кажется, я исправил его с помощью
for(int i=0; i<pagerAdapter.getCount(); i++){
Fragment frag = pagerAdapter.getItem(i);
. . .
}
Больше NullPointerException или размер 0