前回のおさらい
前回は,複数のアクティビティの取り扱いとインテントに関して学びました。
具体的には,
- 画面リソースの作成方法
- アクティビティ間(主画面から副画面)の遷移方法
- AndroidManifest.xmlの記述方法
- アクティビティ間のデータ引渡し方法
といった説明をしました。
今回から2回にわたり,Android OSのユーザインターフェースのパーツ(以下,コントロールとします)の使い方をご説明します。
1回目は,
- アプリタイトルの変更方法
- 文字列リソースの管理方法
- アプリアイコンの設定方法
- メニューの追加とハンドリング方法
についてご説明します。
前回のアプリは,主画面の[Back]ボタンを押すと副画面に遷移し,エミュレーターのバックボタンを押すと主画面へ戻る動きをしましたが,今回は,これらをメニュー操作で行うように動作を変更します。それでは,前回のサンプルアプリに作り込みを行っていきます。
アプリタイトルの変更方法
まずは,アプリタイトルを変更してみます。
AndroidManifest.xmlの[Application Attributes]の[Label]に文字列リソースを指定することでタイトルを表示することができますが,今回のサンプルでは,主画面と副画面があるので,それぞれの画面でタイトルを変更してみます。
アプリタイトルを設定は,主画面・副画面のonCeateに以下を追加します。
// タイトルを表示する
setTitle( "この画面は主画面です" );
setTitleの第一引数がタイトルに表示したい文字列となります。
例では,主画面のタイトルを設定していますが,副画面では「この画面は副画面です」としてください。タイトルは,直接ソースコードに書いても動作に支障はありませんが,アプリを多言語対応するために,ソースコードから文字列を切り離し,リソースとして管理します。
文字列リソースは,プロジェクト内の以下に保存されています。
多言語に対応していないアプリは,端末のロケール設定に関わらず,以下の文字リソースが使われます。
res/values/strings.xml
アプリを日本語とそれ以外の言語(英語)に対応させる場合は,以下のように文字列リソースを用意します。
- 日本語: res/values-ja/strings.xml
- 英語: res/values/strings.xml
端末のロケール設定が日本語であれば「res/values-ja/strings.xml」が使われ,それ以外のロケール設定であれば「res/values/strings.xml」が使われます。それ以外の言語は,端末が多く使われている英語圏をターゲットにするのが無難なので,英語メッセージを用意しておきます。
それぞれのstrings.xmlは,以下のように記述します。
// 日本語用の文字リソース:res/values-ja/strings.xml
title_main="主アクティビティ"
title_sub="副アクティビティ"
// 英語用の文字リソース:res/values/strings.xml
title_main="Main Activity"
title_sub="Sub Activity"
=の左は,ソースコードから参照するID,右がIDに紐付く文字列になります。それぞれのファイルで,同じIDを使っているところがポイントです。IDは,それが何処で使われているのか判断できるように,title_と最初に付けます。
たとえば,ボタンなどのキャプションであればcapt_,メニューのタイトルであれば,menu_といった具合です。 リソースエディタで編集すると画面1のような感じです。
文字列リソースを使ってタイトルを設定するのには,以下のコードになります。
主画面:
// 主画面のタイトルを表示する
setTitle( R.string.title_main );
副画面:
// 副画面のタイトルを表示する
setTitle( R.string.title_sub );
setTitleの第一引数には,文字列ではなく先で作成した文字列リソースのIDを指定することで,文字列リソースを参照できます。文字列リソースは,R.string.xxx」のように指定します。

