2

さて、私は 1 つのレイアウトを使用し、strings.xml を使用してプログラムで文字列を変更したいと考えています。

40 の質問があり、常に 4 つの回答があります (それらは静的です)。

だから私の考えは次のようになります:

while i < 40:
 set question to question[i]
 on answer click: i++

文字列を動的に取得するにはどうすればよいですか。いつも使っていgetResources().getText(R.string.example)ました。

次のようなことができますか:

String dynamic = "R.string.example" + i;
getResources().getText(dynamic)
4

2 に答える 2

2

おそらく、strings.xml (または別の場所) の配列に回答と質問を保存することも、必要に応じてさらにいくつかの配列を保存することもできます。したがって、getResources() を使用して現在行っているように配列をロードできますが、getStringArrayを使用し ます。また、配列がある場合は、正しい回答/質問またはそれでやりたいことを動的に取得できます。

strings.xml (または別の xml):

<string-array name="months_array">
    <item>Jan</item>
    <item>Feb</item>
    <item>Mar</item>
    <item>Apr</item>
    <item>May</item>
    <item>Jun</item>
    <item>Jul</item>
    <item>Aug</item>
    <item>Sep</item>
    <item>Oct</item>
    <item>Nov</item>
    <item>Dec</item>
</string-array>

あなたのコードで:

String[] months = getResources().getStringArray(R.string.months_array);

これはあなたが望んでいたものですか?

于 2012-12-16T13:34:03.403 に答える
1

さて、私は 1 つのレイアウトを使用し、strings.xml を使用してプログラムで文字列を変更したいと考えています。

これは、アニメーションがまったく必要ない場合の方法です。

次のようなことができますか:

String dynamic = "R.string.example" + i;

getResources().getText(動的)

Resources.getIdentifier()メソッドを使用します。

int textId = getResources().getIdentifier("example" + i, "string", getPackageName());
getResources().getText(textId);

しかし、ndsmyterすでに述べたように、すべての質問と回答を 5 つの異なる配列 (質問テキスト用に 1 つ、4 つの回答用に 4 つ) に配置することを検討することをお勧めします。次に、この配列を起動時に 1 回だけロードし、単純に を使用しiて 5 つの配列からすべてのデータを 1 回のヒットで取得します。

于 2012-12-16T13:42:10.013 に答える