2012-01-08 9 views
0

私はActionBarSherlock互換ライブラリを使用し、アクションバーのタブ間でページングするときに異常な動作が発生します。各タブには単純なフラグメントが含まれていますが、特別なものはありません。画面の向きが変更されていないにもかかわらず、フラグメントのonCreateViewメソッドがあまりにも頻繁に呼び出されることがわかりました。それはプリキャッシングのようなものです。私はそこに3つのタブがあり、アクティビティが作成されると、最初の2つのフラグメントに対してのみonCreateViewが呼び出されます。最後の断片は、1つ前のページに進むまでビューを作成しません。同じ動作は、最後のタブから最初のページングにページングするときに発生します。アクションバーのタブをページングするときにフラグメントのビューを再作成

これはなぜ発生するのですか?親アクティビティが作成を終了すると同時に、すべてのビューを作成すると仮定します。私は何度も何度もビューを作成する必要はありません。フラグメントに変更はなく、静的です。それは意味がなく、ページングがちょっと遅くなる...

答えて

2

数時間後、私は何が起こっているのかを見つけました。 ViewPagerにはデフォルトの設定DEFAULT_OFFSCREEN_PAGESがあり、これはViewPagerのビューコンテナに保存されるビュー(私の場合はフラグメント)の最大数を設定します。明らかに何らかのリソース最適化です。不可視のビューは必要に応じて破棄して復元することができます。

私が見落としたsetOffscreenPageLimit(int limit)セッターでこの値を変更するのは簡単ではありません。

+0

ありがとうございました。あなたの答えは、私には別のやり方で役立ちました。ビューが動的に追加されるカスタムレイアウトがありました.4つの画面がありました。私が4番目の画面にスワイプして最初に戻ったとき、私のカスタムレイアウトは私が動的に追加したビューで正しく表示されませんでした。問題を直接解決する解決策ではありませんが、これで問題が修正されました。 – rogerstone

0

ユーザーエクスペリエンスを高めるために意識的に行われたと思います。 互換性のあるlibからViewPagerを実装するのと同じ方法が実装されています。

とにかく、ソースを入手できます。

関連する問題