通常、次を使用してリソース XML から文字列値をフェッチします。
String mystring = getResources().getString(R.string.mystring);
ここで、ランタイム条件に基づいて文字列の代替バージョンを選択したいと思います。
String selectivestring;
if (someBooleanCondition)
selectivestring= getResources().getString(R.string.mystring);
else
selectivestring= getResources().getString(R.string.theirstring);
ここまでは順調ですが、そのような「代替文字列のペア」がたくさんあるので、1 つのタイプ (「my_」など) と代替タイプ (「alt_」など) の前に整然とプレフィックスを付けたいと思います。
String selectivestring1;
if (someBooleanCondition)
selectivestring1= getResources().getString(R.string.my_string1);
else
selectivestring1= getResources().getString(R.string.alt_string1);
.
.
.
String selectivestring2;
if (someBooleanCondition)
selectivestring2= getResources().getString(R.string.my_string2);
else
selectivestring2= getResources().getString(R.string.alt_string2);
(上記のコードは説明用です。最終的にやりたいことは、これをパラメーター化して、これをループ、配列、または独自のアクセサーに入れることができるようにすることです)
Java にプリプロセッサがあれば、文字列連結を使用して "my_" 対 "alt_" プレフィックスを選択できたはずです。しかし、私はそうではないことを知っているので、上記で概説したように、実行時に文字列リソース識別子を変更する方法、回避策、または提案はありますか?
注:各文字列の代替バージョンは、異なる言語/ロケールではありません。私は基本的に、文字列の元のバージョンと別のバージョンを同じリソース ファイルに並べて保持し、2 つを簡単に比較できるようにしています。