2016-06-23 4 views
1

私のアプリケーションでViewPagerに100の同じフラグメントを実装します。このフラグメントは、サーバーからのかなり大きな表示データです。私がコードmViewPager.setOffscreenPageLimit (100)を置くと、アプリは非常に重いと感じます。したがって、私は方法を使用します:setOffscreenPageLimitを削除し、サーバー上のデータをチェックするメソッドを呼び出すと、フラグメントが選択されたときに表示されます。しかし、これが起こると、フラグメント "1"が選択された後、フラグメント "2"に、フラグメント "1"に戻ると、フラグメント "1"がアクティビティを繰り返す。私の質問は、各フラグメントのアクティビティを維持する方法が選択されているか、最後の条件で選択されたフラグメントに戻るときですか?私の英語には申し訳ありません。各フラグメントを内側のViewPagerで保持しますか?

答えて

0

あなたがsetOffscreenPageLimitを削除する場合は、各フラグメントの活性を維持する方法がでフラグメントの状態データを格納している:あなたは再び、あなたがでフラグメントを更新するとき、あなたはそれを残すとき

@Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putData("key", fragmentData); 
    } 

あなたが保存した状態データ。

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
      fragmentData = savedInstanceState.getData("key", defaultData); 
    } 

ビューページでいくつかのフラグメントを使用する必要があります。あまり使用しないでください。フラグメントを使用し、多数のビュー、データを表示することを考えてください。

0

setOffscreenPageLimit: は でビュー階層に現在のページのいずれかの側にアイドル状態を維持しなければならないページ数を設定します。この制限を超えるページは、必要に応じて アダプタから再作成されます。

ビューページャーがページをアクティブに保ち、アプリケーションがゆっくり実行できるようにするため、オフスクリーンサイズを大きく設定しないでください。また、setOffscreenPageLimitを削除すると、この設定のデフォルトは1になります。つまり、この制限(1)を超えたページは、必要に応じてアダプタから再作成されます。 https://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)

関連する問題