FragmentPagerAdapter
という無限の拡張子を作成しました(this siteでこれを実現する方法の例があります)。これにより、52個のフラグメント(週に1個)の50個(任意の数)のセットを反復することができ、それにより、ユーザに無限のフラグメント感を与えることができます。 ViewPager.setCurrentItem
を呼び出すことによって、フラグメント間をジャンプ/スクロールするとViewPager.setCurrentItemは、smoothScrollがtrueに設定されている場合にのみ機能します
、私が見る2つのシナリオがあります。
- ジャンプ唯一のフラグメントのいずれかの方法 - すべてokです。これは、おそらく、のコードのためです(
We are doing a jump by more than one page
で始まるコメントを探します) - 複数のフラグメントでジャンプすると、
setCurrentItem
が呼び出された場合にのみ、新しいフラグメントが正しく表示されますsmoothScroll
がtrue
(すなわちsetCurrentItem(i, true)
)に設定されている場合。if (smoothScroll) { smoothScrollTo(destX, 0, velocity); if (dispatchSelected) { dispatchOnPageSelected(item); } } else { if (dispatchSelected) { dispatchOnPageSelected(item); } completeScroll(false); scrollTo(destX, 0); pageScrolled(destX); }
これは私が私の深さのうち、午前ポイントです。それ以外の場合は、私が見ることができるものから、空白の画面
があるViewPager.scrollToItem
がそれに次のコードを持っているので、これはおそらくです。なぜこれはif/else
が私が経験している現象を引き起こすのでしょうか?
まず、あなたの 'FragmentPagerAdapter#getItem()'が適切な位置で適切に呼び出されているかどうかを調べます。何らかの理由でフラグメントを適切にロードしていないようです。おそらく3回2回呼ばれているはずです。選択した位置に1回、前後に1回。 – DeeV
@Deev、私はこのアイデアをテストするためにlogcatにエントリを追加しました。結果はpastie.org/private/ybvvn5rwl1465haic6fvqにあります。 'getItem'は' setCurrentItem(i、false) '(原因不明の状況)が発生したときに3回呼び出されます。ログには 'getItem(1327)'、まだ 'newInstance(27)'があることに注意してください。これは "無限の"ビューアのためです - 1327%52 = 27 – levengli
@levengi問題が何であるかわかりません。スムーススクロールが有効になっているという前提のもとに、この例があるようです。 – DeeV