viewpager の fragment でなぜかパラメータが反映されない
現象
viewpager で 同一fragment をパラメータを変更して複数回使いまわししたとき、すべて同じパラメータになってしまう。(ページ切り替えしても全部同じ画面)
- fragment上でViewpagerを実装
- パラメータ(argument)によってViewpagerを切り替える
- 呼び出すfragmentは1種類
原因
呼び出し元でbundleを使いまわしているのが原因。
一部のパラメータを変更して呼び出せばイケる!と思ってしまったのが間違いの始まりだった。
回避策
BundleはCloneメソッドがあるので、コピーを作成して、新しいfragmentに渡してやれば、解決する。
対応例1
new Bundle()して、必要なパラメータを手動でコピーする
サンプル: https://github.com/indication/OpenRedmine/commit/1bffdcc793de65503e0f7bd1055f6f5ddadaf5b1
対応例2
clone()メソッドを呼び出して必要なパラメータを設定してfragmentを呼び出す
サンプル: https://github.com/indication/OpenRedmine/commit/5b3f6d0bda5c269f2d73ec58c6d59a824dddde91 (comming soon)