ブラウザや地図、ストリートビューの基、Intentとは?:Androidで動く携帯Javaアプリ作成入門(3)(2/3 ページ)
本連載で、SDKとEclipseを使ってAndroidの携帯端末で動くJavaアプリを作成し、Android Market配布を目指しましょう
Editor Activityのレイアウトも編集
Main Activityのときと同様の方法でEditor Activityのレイアウトも編集します。
Main ActivityにもEditor Activityにも「Button01」というIdがありますが、IdはActivity単位でユニークになっていれば同じ名前を使用しても問題ありません。
「Android Resource Editor」でリソースの定義と指定
Idを「TextView01」と指定したい場合、レイアウト定義ファイルには「@+id/TextView01」と記述されています。一見分かりづらいです
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
が、書式は以下のとおりです。
[パッケージ]は省略可能です。[+]は特別な意味を持っているので、後述します。
リソースを参照するにはあらかじめリソースを作成しておかなければなりません。例えばIdを作成するには、「res/values/ids.xml」を作成し、ADTの機能の1つ、「Android Resource Editor」で編集します。
作成したXMLファイルの先頭には、以下のXML宣言が必要です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Idの場合は、ids.xmlというファイルを作成してリソースを定義しました。必ずしもこの名前である必要はありませんが、慣習として以下の名前が使用されています。
名前 | 役割 | 参照方法(XML) | 参照方法(Java) |
---|---|---|---|
res/anim/xxx.xml | アニメーションを定義 | @anim/xxx | R.anim.xxx |
res/layout/xxx.xml | レイアウトを定義 | @layout/xxx | R.drawable.xxx |
res/values/arrays.xml | 配列を定義 | − | R.array.xxx |
res/values/attrs.xml | カスタムレイアウトを定義 | − | R.styleable.xxx |
res/values/colors.xml | 色を定義 | @color/xxx @drawable/xxx |
R.color.xxx R.drawable.xxx |
res/values/dimens.xml | 寸法を定義 | @dimen/xxx | R.dimen.xxx |
res/values/ids.xml | IDを定義 | @id/xxx | R.id.xxx |
res/values/strings.xml | 文字列を定義 | @string/xxx | R.string.xxx |
res/values/styles.xml | スタイルを定義 | @style/xxx | R.style.xxx |
表2 リソースの種類と定義場所と参照方法 |
上記では、ids.xmlにIdとして「foo」「bar」を定義しました。XMLでこれらを参照するには「@id/foo」「@id/bar」と記述しますが、Idに限り「@+id/qux」のように「+id」という指定をすることで、あらかじめIdリソースを作成しておかなくてもXMLで定義するほかのリソースにIdを付与可能です。ids.xmlを用意するよりも@+idを使用する方が一般的でしょう。
Idはプログラムから参照するために使用するので、分かりやすい名前を付けるとよいでしょう。
Activityを実装して“Intent”を理解しよう
今回のアプリは画面が2つあるので、Activityも2つ実装します。Main Activityから見ていきましょう。
Main Activityの実装
以下はMain Activityの全ソースです。レイアウトをXMLで定義しているので、かなり短くて済みます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
15行目でonCreate()をオーバーライドしています。「Activityは、このメソッドが最初に呼び出される」というのを覚えていますか? このメソッドには、最初に行うべきことを実装しています。
16行目は必ず必要なスーパークラスのメソッド呼び出しです。
17行目は、あらかじめ定義しておいたレイアウトを設定しています。
この2つは必ず最初に行わなければなりません。
19行目でIdからButtonのインスタンスを取得し、20行目でボタンが押されたときに呼び出されるOnClickListenerを設定しています。ここで「Intent」というクラスを使用して画面遷移を行っています。
画面遷移のIntent
Intentは、Androidアプリ作成ではActivityに並ぶほど重要なので、クローズアップして詳細に説明します。前述しましたがIntentは英語で「意図」「意志」「目的」といった意味があります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
24行目でIntentを作成します。Intentはその用途によって作成方法が異なりますが、自分のアプリ内にある画面へ遷移する場合、このように遷移先Activityを指定するのが簡単です。
27行目でIntentにputExtra()メソッドで付加情報を与えています。付加情報は名前と値を渡し、取り出すときには名前を指定します。今回はCharSequenceを1つだけ付加情報として設定していますが、putExtra()はさまざまな型でオーバーロードされていて、複数の異なる型を組み合わせて設定可能なので、渡したいものは何でも渡せると思ってよいでしょう。
28行目では、startActivityForResult()で遷移先のActivityを起動します。第2引数は呼び出し元のActivityで定義したリクエストコードです。このリクエストコードは呼び出し先のActivityから戻ってきたときに使用するので定数にしてあります。
呼び出し先から結果が返された際に呼び出されるメソッド
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
35行目のonActivityResult()は、呼び出し先から結果が返された際に呼び出されるメソッドです。36行目でリクエストコードを確認し、37行目で結果コードを確認し、39行目で呼び出し先から渡された付加情報を取り出し、TextViewに設定しています。
次ページでは、Intentを使ってWebブラウザや通話、地図アプリ、ストリートビューを使う方法について説明します。
Copyright © ITmedia, Inc. All Rights Reserved.