ページャー画面の回転
これまで端末の回転について考慮してなくて、そろそろということではじめたらいろいろはまった。まずそのまま回転させてみると「問題が発生しました」の連発になる。
マニフェストファイルに configChanged のおまじないをつければよいとかいうのでやると確かによいが、冷静に考えたらこれはレイアウトは維持したままで大丈夫だから変更してないことにしてくれ、ということだった。それはちょっと困る。
ということでちゃんと調べてビューを更新するようにする。onCreate(Bundle savedInstanceState) にあるように saveInstanceState を使えということらしい。
そこで、Activity のクラスに書いてみるがどうもうまくいかない。というかベースだけでなにも表示しない。そうか、Fragment だった。ということで、Fragment のところで保存してそれを取り出すようにする。と、気づいたのは少ししてからで、しばらくは変だなあと悩んでいた。
調べていたら FragmentManager にバグがあるという話まで見つかったので(2012-2013 のこと)、まさかまだ直っていないのか? と思っていたりもしたが、SDK のソースを見ていたら修正はされているとわかった(実はそれまでわざわざソースを落としていなかった)。つまり、自分のコードの書き方に間違いがあると。そんなこんなで場所が違うと分かった。
よし回転させても表示できるしと安心していたら、なんだかちょっと様子が違う。横向きと縦向きとではグリッドの配列を長辺にあわせて変更していたのだけれど、これが反映されない。不思議に思っていたら、なんのことはないはじめのマニフェストファイルの指定がそのまま残っていたのだった。
ということはまさか Fragment にいれたコードは生きていないのか? と思ったらそういうことではなかった。よかった。
その後、向きを調べてそれに応じてビューに反映できるように修正を行い、どうやら画面が回転してもそれに応じてビューをきちんと(期待通りに)更新できるようになった。Fragment 使っていると注意が必要なのだな。
| 固定リンク
« 字幕考 | トップページ | MI-6 前後編 »
コメント