delete from hateblo.jp where 1=1;

タイトルに意味はありません。

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)