Я создал бесконечное расширение FragmentPagerAdapter
(есть примеры того, как это сделать на this site). Это позволяет мне перебирать 50 (произвольное число) наборов из 52 фрагментов (один раз в неделю), тем самым давая бесконечное ощущение фрагментов пользователю.ViewPager.setCurrentItem работает только с w/smoothScroll, установленным в true
При прокрутке/прыжки между фрагментами по телефону ViewPager.setCurrentItem
, есть два сценария, которые я вижу:
- Прыжки только один фрагмент в любом случае - все в порядке. Вероятно, это связано с кодом, который специализируется на этом прецеденте в
ViewPager.setCurrentItemInternal
(ищите комментарий, начинающийся со словWe are doing a jump by more than one page
) - При скачке более чем на один фрагмент новый фрагмент отображается правильно на экране, только если вызывается
setCurrentItem
когдаsmoothScroll
установлен вtrue
(т.е.setCurrentItem(i, true)
); в противном случае есть пустой экран
Из того, что я могу видеть, это, вероятно, потому, что ViewPager.scrollToItem
имеет следующий код в нем:
if (smoothScroll) {
smoothScrollTo(destX, 0, velocity);
if (dispatchSelected) {
dispatchOnPageSelected(item);
}
} else {
if (dispatchSelected) {
dispatchOnPageSelected(item);
}
completeScroll(false);
scrollTo(destX, 0);
pageScrolled(destX);
}
Это та точка, где я из моей глубины. Почему этот if/else
вызывает явления, которые я испытываю?
Первое, что я бы посмотрел, это если ваш 'FragmentPagerAdapter # getItem()' правильно вызывается с соответствующими позициями. Похоже, что по какой-то причине они не загружают фрагменты. Вы должны увидеть, что он называется два, может быть, три раза. Один раз в выбранной позиции, один до и один после. – DeeV
@Deev, я добавил записи в logcat, чтобы проверить эту идею. Результат можно найти на странице pastie.org/private/ybvvn5rwl1465haic6fvq. 'getItem' вызывается 3 раза, когда запускается' setCurrentItem (i, false) '(т. е. необъяснимая ситуация). Обратите внимание, что журнал имеет 'getItem (1327)' еще 'newInstance (27)'. Это из-за «бесконечного» зрителя - 1327% 52 = 27 – levengli
@levengi Я не уверен, в чем проблема. Кажется, что пример мог быть с предположением, что плавная прокрутка включена. – DeeV