このページの本文へ

前へ 1 2 3 4 次へ

これで作れる! Androidのアプリケーション 第7回

Androidアプリの設定画面を作成する

2010年08月12日 18時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

アクティビティのライフサイクルと設定値

 以前に(関連記事)アプリケーションの画面を構成するアクティビティがどのような経過をたどるのかを解説しました。このとき画面が回転すると、アプリケーションは1回強制終了され、再度onCreateから実行されることを示しました。

 このライフサイクルを考えると、Androidのアプリケーションでは、設定値などは終了時にまとめて保存したり、ユーザーの操作によって保存するようなやり方では、データが失われてしまう可能性が出てきます。画面の回転はアプリケーションの状態に関わりなく、いつでも行なわれる可能性があるからです。

 そうすると設定値などは確定した段階で保存されるべきで、後から保存するのは、ユーザーに確認させる必要がある場合をのぞいて、あまりするべきでない方法になります。実際にAndroidのオプション画面(ホーム画面からメニューキーで入る)では、設定は設定画面を操作した段階ですぐに保存され、ユーザーはいつでもバックキーで上位の画面に戻ったり、ホームキーなどで設定画面を抜け出せるようになっています。

 このように、ユーザーに明示的に保存操作などをさせず、GUIで変更操作を行なった段階で設定値を変更するというのがAndroidの通常のスタイルなのです。

 前回解説したメニューで、アイテムの編集画面のメニューにわざわざ「キャンセル」があったのは、たとえばバックキーを使ってひとつ前の操作に戻った場合に“設定正常終了”という意味を持ち、その時点で設定項目が保存されてしまうからです。もし誤った設定操作をユーザーがして、キャンセルしたくなった場合は別の操作が必要になるのです。

アプリ内のボタンではなく、メニュー内にキャンセルボタンを用意した

 このようなときアプリケーション内にボタンを置くのは、あまりいいやり方とはいえません。「キャンセル」ボタンだけではユーザーを混乱させてしまいますし、かといってこのアプリケーションでだけ「設定終了」や「OK」ボタンを使うというのは普段はバックキーで設定を終了するのが一般的であることを考えると、複雑になってしまいます。

 このためには、ちょっと面倒になりますが、キャンセルの機能は普段見えない状態にしておかねばならず、だとするとメニューからの実行が妥当と思えたのです。

 またこのWorldClockでは、タイムゾーンを表示するアイテムの位置や状態を記憶しているのですが、なにか変更があったら、直ちにPreferenceに反映させる必要があります。ぞれでsave_allというメソッドを作り、必要なところでこれを呼び出しています。このメソッドはその名前からわかるように、アイテムなどの設定値をすべて保存するものです。最適化という点でいえば、変更があったところだけを保存すればいいのでしょうが、そうなると、それぞれでコードが変わってしまいます。そこで効率を無視してすべて保存するようにして、なにか変更があったところで、このメソッドを呼ぶようにしているのです。

保存したデータの確認

 アプリケーションの開発中には、保存したデータが正しいかどうかをチェックする必要もあります。ファイルは、Androidシステムの中では、「/data/data/パッケージ名/shared_frefs」にある、パッケージ名のついたxmlファイルです。

 これをチェックするには、Eclipseのパースペクティブで「DDMS」を開きます。ツールバー右側のパースペクティブのショートカットで、左側のアイコンをクリックしてそこから「DDMS」を選択します。

Eclipseのウィンドウ右側のパースペクティブメニューを使いDDMSパースペクティブへと切り替える

 DDMSパースペクティブが開いたら、Eclipse左側のDevice領域に、起動しているエミュレータや接続されている実機がリストされるので、チェックしたいものを選択します。

DDMSパースペクティブ。ここでは、エミュレータやUSBデバッグ接続した実機のファイルシステムなどを見ることができるほか、スレッドやヒープの状態を確認できる

 次に右側のFile Explorerタブを開きます。ここには、対象のデバイスのファイル領域が表示されます。WorldClockのPreferenceデータを見たいときには、「/data/data/com.tyrell_replicants.worldclock/shared_frefs」を開きます。ここにある「com.tyrell_replicants.worldclock.xml」が保存されたPreferenceデータです。

 これを表示させるには、File Explorerエリアの右上にある「pull a file from a device」ボタンを使って、PC上にファイルをコピーさせ、これを適当なソフトで開いてください。

DDMSのFile Explorerでは、右上の3つのボタンを使い、ファイルをPC側にコピー(左端のボタン)したり、ファイルを転送(中央ボタン)したり、ファイルを削除(右側の赤いマイナスアイコンのボタン)するなどが可能

 このファイルはxml形式で、Preferenceオブジェクトが表現されています。タグ名がデータのタイプになっていて、名前と値がアトリビュートで表現されています。

Preferenceは、このようなxmlファイルとして保存されている。PCに転送してから見ることができる

 DDMSのFile Explorerでは、そのほかにもファイルのアップロードや削除(赤いマイナスボタン)ができます。DDMS自体はAndroid SDKに含まれている機能で、SDKフォルダの下のtoolsフォルダに起動用のバッチファイル(WindowsではDDMS.bat)があります。

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン