String リソースから文字列の取得方法

今回はプログラムから文字列 (String) リソースの文字を読み込む方法について説明します。

文字列リソースについては、 「文字列リソースのローカライゼーション」等の記事をはじめとして、 これまで様々な場面で利用してきました。

よく考えてみたら、プログラムからリソースを参照するという基本的な作業について、記事を書いていなかったことに気付いたので、 この記事では 慌てて さっそく書いてみようと思います。

文字列リソースの取得についてはとても簡単なので、ついでにボタンのイベントハンドラメソッドの設定方法についても触れてみたいと思います。

プログラムから文字列リソースを取得する方法 - getString メソッド

ここで作るプログラムは次のような動きをします。

String リソースから文字列の取得方法

ボタンがひとつあり、このボタンを押すと下側に Toast 通知が表示されます。

このトーストのメッセージの内容を String リソースから実行時に取得します。 今回は res/values/strings.xml 内の hello_world を取得します。

String リソースから文字列の取得方法

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 などでボタンの参照を取得して保持する必要も無い場合も多いはずです。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Android 開発入門