2013-08-20 8 views
10

私は3つのフラグメントを保持するViewPagerを使用していますが、各フラグメントはリストをロードします。問題は、アプリケーションが初めて実行され、次のフラグメントにスワイプするときです。このフラグメントは、そのビューが表示されるまでにロードする必要があります(約2秒)。これは非常に奇妙な動作です。私が望むのは、アプリケーションが起動した後で、ViewPagerのすべてのフラグメントがユーザーのために準備されている必要があるため、フラグメントをスワイプするときに待ち時間がないことです。どうやってやるの?最初の実行時にViewPagerのフラグメントのプレビューを

+0

あなたがFragmentPageAdapterやFragmentStatePageAdapterを使用していますか? – Delyan

+0

あなたが考えていることは、アクティビティ(またはページャ)のフラグメントリストアダプタをキャッシュすることです。これにより、各ページの変更時にアダプタがリロードされなくなります。 – AedonEtLIRA

+0

@Delyan私はFragmentPagerAdapterを使用します –

答えて

28

(ViewPagerの初期化後)onCreate()でsetOffscreenPageLimit()を呼び出してください。 OffscreenPageLimitは、現在のページのいずれかの側に保持する必要があるページ数を設定します(ケース2)。これでフラグメントのすべてがインスタンス化されます。

(その他(2秒のロード時間が良い音していないため強くお勧めします)可能性は、あなたのリストやlistadaptersのパフォーマンスを向上させることである)

+0

実際に '2 'に設定すると、3つのフラグメントがすべて確実に保持されます。この値は、現在のページ**のいずれかの側に保持する必要があるページ数を設定し、総ページ数ではありません。 –

+0

はい、わかっています。しかし、限界値を '100'に設定することもできますが、それでも動作します;-)これはほんの一例です。もちろん、彼が望むならば限界値を' 2 'に設定することもできます。 – Namenlos

+1

その場合は、なぜあなたの答えで* "あなたの場合** 3 **" *と答えるのですか?それは正しくないと私にあなたが知らなかったことを伝えるので、私はもともとそれを指摘するコメントを追加した理由です。 –

関連する問題