端末の向きを変えたときの注意点

ニコカレアプリはずっとエミュレータで開発していたので実機にインストールするまで気づかなかったのですが、端末の向きを変えるたびにActivityが再生成されてしまうようです。なのでonCreate()とかで画面の初期値を取得してEditTextにセット…とかやってると端末の向きを変えたタイミングで編集内容が初期値で上書きされてしまったりします。
解決策は、Activityの向きを縦か横に固定してしまいそもそも向きの変更が起こらないようにしてしまう方法と、Activityの再生成を抑制する方法の二通りがありそうです。

向きを固定する方法

AndroidManifest.xml要素にに以下のような感じでandroid:screenOrientation属性で縦(portrait)もしくは横(landscape)を追加するといいみたいです。

<activity  
    android:name="ActivityName"  
    android:label="@string/app_name"  
    android:screenOrientation="portrait">

詳しくは以下のエントリを参照してください。

Activityの再生成を抑制する方法

AndroidManifest.xmlの要素に以下のような感じでandroid:configChanges属性を追加するといいみたいです。

<activity  
    android:name="ActivityName"  
    android:label="@string/app_name"  
    android:configChanges="orientation|keyboardHidden">

詳しくは以下のエントリを参照してください。

エミュレータでテストする

エミュレータでは端末の向きの変更を試すにはどうすればいいんだろう…?と思い、ググってみたところ、CTRL+F11で変えることができるようです。これで端末の向きを変えてもアプリケーションの動作に問題ないかをエミュレータ上でもテストすることができます。

ふと思ったこと

なんだかGoogle先生に教えてもらったことをまとめているだけのエントリですが、こうやって情報を集めていると、AndroidってこれまでのJava系の人たち(はてな中心?)とは少し違う層の人たちが取り組んでいるんだなぁ…ということがよくわかります。やはり仕事ドリブンではなく、個人の趣味でやられている方が多いのでしょうか?