1

Activity > ViewPager > Fragments完全に破壊されて再作成されているという問題に苦しんでいます。画面orientationが変更されたときのように、この種のシナリオを処理しています保存されたものからrestoreだけですが、デバイスがしばらくアイドル状態になり、画面が何度も表示されると、内部に保存されているのは、その null です。 コード例: datainstanceoffONdatainstancedestroyed

ベースフラグメント

@Override public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    Icepick.saveInstanceState(this, outState);
}

 @Override public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Icepick.restoreInstanceState(this, savedInstanceState);
    setRetainInstance(true);
}

アクティビティ

    mAdapter = new BrochureContentAdapter(getSupportFragmentManager(), models);
    pager.setAdapter(mAdapter);
    pager.setCurrentItem(position, true);
    pager.setOffscreenPageLimit(models.size());

画面が回転する(再作成される)ときに ハンドルをBaseFragment保存および復元することはすべてうまくいきます。私の唯一の問題は、画面がしばらく戻って戻ってくると、保存されたインスタンスが完全に破壊されることです。instanceIcePickfragmentBaseFragmentidleON

誰かが以前に同様の問題を抱えていて、それに取り組む方法を見つけましたか?

4

3 に答える 3

0

フラグメントが完全に破棄されていない可能性があります。ビューだけが破棄されています。フラグメントに対して が呼び出されたかどうかを確認し、呼び出された場合onDestroyViewは、ビューの状態を で復元しますOnActivityCreated

于 2015-11-24T03:01:16.083 に答える