家族ToDo(仮)開発日誌

やりたいことや行きたい場所を家族で共有するためのAndoridアプリの開発日誌(兼Android開発学習メモ)です。

開発日誌(2) : 画面(Activity)の作成とウィジェットの配置

今回の進捗

  • ToDo一覧画面の作成(UIだけ)
  • fragmentに関する調査

作業時間: 2h

Activityを構成するファイル

ウィザードが頑張ってくれたおかげでとりあえず最小限の動くコードセットができた。これを書き換えて自分好みの画面を作っていきたい。

Androidにおいて1つのActivityは2つのXML(activity_*.xmlとfragment_*.xml)と1つのクラス(*Activity.java)で構成されている模様。昔Androidについて調べたときはレイアウトXMLはActivityあたり1つしかなかったような気がするがAndroid 3.0からFragmentという概念が追加されたらしい。

フラグメント - Android 開発入門

要は画面部品の再利用やデバイスに応じた切り替えをしたいがためのテンプレートエンジンのようなものなのだろう。たぶん。

試しにactivity_*.xmlの中を覗いてみるとほぼ空っぽで、FrameLayoutのみが定義されている。ここからfragment_*.xmlを参照しているのかと思いきやXMLに記述はなく、*Activityクラスにて処理としてfragment_*.xmlの内容を紐付けしている模様。うーん。

画面の構成情報がコードに入ってしまっているように見えてなんか嫌だったのでFragmentに関する処理やXML中の記述を削除*1して、fragment_*.xmlを削除し、activity_*.xmlのみにして動くことまでは確認した。イベントハンドラウィジェットインスタンスの扱いが面倒そうなのでFragmentは使わずにいこうと思う。ただAndroid Studioのウィザードに画面を作らせると意地でもFragmentを使おうとしてくるのが鬱陶しいので画面は既存のレイアウトのコピペで作ることにした。

ウィジェットの追加

で、画面にウィジェット(Visual Studioの世界で言うところのコントロール)を追加するわけだが、Android Studioが大変よくできていて、Visual Studioのように直感的に使用できる。ActivityのXMLをエディタペインに開き、Designタブに切り替えてPaletteペインからD&Dすればよい。ウィジェットを選択すればPropertiesペインでプロパティの編集ができる。すばらしい。

まずはデフォルトのRelativeLayoutを削除してLinearLayoutに変更する。で、その上にListViewを追加する。Designタブに切り替えると、適当なテキストが表示されたListViewが追加されたのを確認できる。

ツールバーの三角アイコンを押して実行。Genymotion上でアプリが動くが、データが無いのでまっさらな表示のまま。何とかしてウィジェットにデータをバインドしてやらなければならない。

f:id:ymkn:20140113004036p:plain

*1:PlaceholderFragment内部クラスとonCreateのif文が該当箇所。