String リソースから文字列の取得方法
今回はプログラムから文字列 (String) リソースの文字を読み込む方法について説明します。
文字列リソースについては、 「文字列リソースのローカライゼーション」等の記事をはじめとして、 これまで様々な場面で利用してきました。
よく考えてみたら、プログラムからリソースを参照するという基本的な作業について、記事を書いていなかったことに気付いたので、
この記事では 慌てて さっそく書いてみようと思います。
文字列リソースの取得についてはとても簡単なので、ついでにボタンのイベントハンドラメソッドの設定方法についても触れてみたいと思います。
プログラムから文字列リソースを取得する方法 - getString メソッド
ここで作るプログラムは次のような動きをします。
ボタンがひとつあり、このボタンを押すと下側に Toast 通知が表示されます。
このトーストのメッセージの内容を String リソースから実行時に取得します。 今回は res/values/strings.xml 内の hello_world を取得します。
Eclipse で Android アプリケーションプロジェクトを作ったときに初めから作られている文字列です。
さっそくプログラムから文字列を取得する箇所を確認すると、次のようになります。
public void onTestButtonClicked(View v){
String s = getResources().getString(R.string.hello_world);
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
}
この onTestButtonClicked メソッドがボタンクリックイベントに対するハンドラメソッドになっています。
文字列リソースをリソース ID で取得する場合には、このように getResources() メソッドで、 アプリケーションに関連付けされた Resources インスタンスを取得します。その Resources オブジェクトに対して getString メソッドにリソースの識別子を渡すことで期待する文字列を取得することが可能です。
文字列リソースの取得に関してはこれだけです。簡単ですね。
さて、ついでにレイアウトリソースでのイベントハンドラメソッドの設定方法についてみておきましょう。
上の例では、ボタンのクリックイベントハンドラメソッドが、onTestButtonClicked メソッドであるといいましたが、これはどこで指定しているでしょうか。
このハンドラメソッドは、レイアウトファイルで次のように指定しています。
<Button
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test" android:onClick="onTestButtonClicked"/></RelativeLayout>
特に Button などは、多くの場合でイベントハンドラメソッドで何かするということが全てだったりしますから、 こうして簡便にメソッドが指定できれば、findViewById などでボタンの参照を取得して保持する必要も無い場合も多いはずです。