アンドロイドのViewPagerのライフサイクルが本当にうんざりです。私のアプリの構造に何か間違っていると思っています。だから私は次のことができるかどうかの確認をしたい:置き換えられたViewPagerとBackStackのライフサイクル?
- 私はいくつかのタブを示すアプリケーションがあります。これらのタブの1つでは、ViewPagerが表示されます.ViewPagerには2つのListFragmentがあります。これらのListFragments は、ViewPagerのonCreateイベントで作成されます。
- ListFragmentsの1つでアイテムをクリックすると、ViewPagerFragment全体が別のフラグメント(別のListFrament)に置き換えられます。
ここでは、私はそこから新しいListFragment
FragmentManager fm = getFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.container, new RequestForm(requestsList.get(itemIndex)));
ft.addToBackStack(null);
ft.commit();
でViewPagerを置き換えるために使用するコードです、すべてが正常に動作しています。しかし、ユーザーが[戻る]ボタンをクリックした場合、私は次のような状況を取得:
- をViewPagerは(onCreateViewから)細かいリロードされますが、ListFragment は内部まで表示されません。私のListFragmentのオブジェクトはまだ生きているようですが、ビューが失われているようですが、 ViewPagerがアウトされている間にオブジェクトが眠らなかったので、onCreateViewは で再作成されていません。
私の意図は、私がやろうとしていることがAndroidの考え方で大丈夫かどうかを知ることなので、ここでコードを投稿していません。私がしたいことをアーカイブするためにAndroid SDKと戦わなければなりませんか?
上記の説明と全く同じ問題があり、getChildFragmentManagerを渡してアダプタを設定すると問題が解決しました。ありがとう!最後に表示された位置を保存し、バックスタックをポップするときに復元する方法を理解しなければなりません。 – speedynomads
私の人生を保存しました。ありがとう。 – Paul
すごい!ありがとう! –