PreferenceFragment を使っているのですが、ある一部の設定項目は internet の向こう側から download する仕組みになっていて、最初の取得は PreferenceActivity から戻る時に実行されるので問題は無いのですが、設定の再取得を行なう機能も追加されてて、それはその項目を選択して AlertDialog が出てきて確認 OK であればすぐに取得、という形になっておりました。
最近の仕様変更というか機能追加で設定がいくつか追加になり、ある設定項目を選択できるかどうか、という項目も追加になっており、設定を再取得したらこれまで選択できなかった設定広告を選択できる、という事もあり得る、という事が判明。
つうかこれってざっくりベースな機能要件が出てきてる時点でそこまで想定して
作りこまなければならなかったのかなぁ。
選択可否な設定というのは onCreate だかでヤッてるのですが、その設定項目を云々してる処理を外側から呼び出し可能に、って思ったら Fragment の中で定義してる手続きを Activity 側から呼び出すとか色々微妙な事が分かる。
むむむ、と言いつつよくよく考えてみるに
getFragmentManager().beginTransaction().replace
してやれば良いらしい事に気づく。試しに盛り込んでみたら更新されていた。
fragment の back stack とか大丈夫かな、と確認してみるに Android FragmentTransaction のまとめ によれば
- 処理としては、同じ containerViewId に追加されている全ての Fragment に対して remove(Fragment) を呼び、それから add(containerId, fragment, tag) を呼ぶのと同じ
とあるので大丈夫ですね。
週明け実装して確認予定。そしてこれから別件対応。