検索
連載

ブラウザや地図、ストリートビューの基、Intentとは?Androidで動く携帯Javaアプリ作成入門(3)(2/3 ページ)

本連載で、SDKとEclipseを使ってAndroidの携帯端末で動くJavaアプリを作成し、Android Market配布を目指しましょう

PC用表示 関連情報
Share
Tweet
LINE
Hatena

Editor Activityのレイアウトも編集

 Main Activityのときと同様の方法でEditor Activityのレイアウトも編集します。

図5 Editor Activityのレイアウト
図5 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」で編集します。

図4 Android Resource EditorでIdを作成したところ
図4 Android Resource EditorでIdを作成したところ

 作成した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.

ページトップに戻る