Androidアプリを開発する際、リソース(文字列など)をXMLに定義しますよね。
それを数値として定義する方法をご紹介します。
【前提知識】 なぜXMLを使うのか
コード上に直接文字列を記述することが可能ですが、なぜXMLに定義するのでしょうか。
XMLに定義することで、文字列を一元管理できます。
例えば、「ポイント」という文字列を複数箇所で表示するアプリがあったとします。
その文字列を変更する場合、全ての文字列を書き換えなければなりません。
XMLに定義しておけば、1カ所の修正で済みます。
Int型(数値)をXMLに定義する
XMLファイルを作成する
res/values
配下に、integer.xml
というファイルを作成します。
『Int型のリソースを定義する』ということが分かるように明示的な名称にします。
※任意のファイル名で構いませんが、分かりやすい名称にすることをお勧めします。
Int型(数値)を定義する
以下のように記述しましょう。コピペ可です!
<!--?xml version="1.0" encoding="utf-8"?-->
<resources>
<integer name="test_value">100</integer>
</resources>
内容の解説
strings.xml
など他のリソースの定義方法とほぼ同じです。
<resources>
タグは必ずルート(一番上)になるようにしましょう。
そして次に<integer>
タグが重要になります。
見ての通り、値をタグで囲い、name=
で定義名を設定します。
値の取得方法
定義ができたら、次はその値をコード上で取得しましょう!
下記のコードはKotlinです。
val testValue: Int = resources.getInteger(R.integer.test_value)
Resources res = getResources();
int testValue = res.getInteger(R.integer.test_value);
【さらに深める】 strings.xml と integer.xml の使い分け
使う場面を切り分けていきましょう。
使用するXMLファイルに悩んだ場合に参照ください。
strings.xml
- 文字列を定義する
- IDを定義する
IDが数字だった場合、「03」というのは数値にするとどうなるでしょうか。
「3」と認識されてしまいます!
また、数字だけじゃなくアルファベットもIDに含まれる可能性がある場合は、strings.xmlに定義しましょう。
integer.xml
- 数値を定義する
「03」のような0詰めの値ではないか確認すべきです。
dimens.xml
- レイアウトのサイズ指定をする
数値を定義するのはinteger.xml
ですが、レイアウト(文字サイズ、余白など)はdimens.xml
に定義しましょう。