縦向きモードでは、私のViewPager
3 つのフラグメント A、B、C がありますが、横向きモードでは、2 つのフラグメント A と C しかありません。したがってFragmentStatePagerAdapter
、モードごとに 2 つの を作成します。問題は、画面の向きが変更され、ViewPager
元の向きの以前のフラグメントを復元して使用する場合です。たとえば、向きを縦向きから横向きに変更ViewPager
すると、A と C ではなく A、B の 2 つのフラグメントが表示されるようになりました。これが発生する理由はわかっていますが、これに対する適切な解決策を見つけることができません。
私の現在の回避策は、ViewPager
フラグメントの再利用を防ぐために (例: 縦向きの場合は id/viewpager_portrait、横向きのレイアウトの場合は id/viewpager_landscape)、異なる ID を使用することですが、古いフラグメントは破棄されず、メモリに保持されるため、メモリ リークが発生します。 .
アクティビティで super.onCreate(null) を呼び出す、またはアクティビティでのフラグメントを削除するなどの回避策を試しましたonCreate
が、すべてアプリがクラッシュします。ViewPager
onSaveInstanceState
だから私の質問はFragmentStatePagerAdapter
、向きが変わったときに1つまたは複数のフラグメントを再利用しないようにする方法ですか?
どんな助けでも大歓迎です。少し早いですがお礼を。