フラグメントが再利用されると、あらゆる種類の問題に遭遇します
フラグメントは通常、ViewPager
. これはAdapterView
、行がリサイクルされる場所とは異なります。FragmentPagerAdapter
またはを使用するFragmentStatePagerAdapter
と、フラグメントは 1 つのページのみを表します。
毎回 ViewPager を再インスタンス化します (ただし、フラグメントは再利用されますか?)
ああ。それは少し違う問題です。
とのストック実装ではFragmentPagerAdapter
、FragmentStatePagerAdapter
いくつかの仮定があります。
特にトランザクションを実行してフラグメントを UI に追加および削除するという点で、フラグメントを完全に制御します。
これらのフラグメントは、1 つの「論理」によってのみ使用されることViewPager
(IOW、ViewPager
構成変更のためにそれを再作成することは問題ありませんが、それで十分です)
問題を複雑にしているのは、これらのアダプターが特定のタグの下にフラグメントを保存することです。そのため、それらのフラグメントがまだそれらのタグに存在する場合、新しいフラグメントが作成される代わりに、それらの既存のフラグメントが使用されます。
それで、この問題を解決する「アンドロイドの方法」はありますか?
なぜ「再インスタンス化」する必要があるのか 、あなたの質問からは不明ですViewPager
。これは、ある種の更新操作、または 2 番目の段落で説明したプロセスを実行することを強制している何かに関連していると思います。
フラグメントをいじる外部エージェントに対してより友好的であるため、試してみることArrayPagerAdpater
ができます。フラグメントのタグを制御するので、正しいフラグメントで作業していることを常に確信できます。フラグメントを自分でキャッシュするのではなく、正しいフラグメントを取得して操作するだけです。