0

私は、いくつかの長い音を同時にではなく、一度に 1 つずつ再生する単純なサウンド ボードの Android アプリを開発しようとしています。サウンドパートは素晴らしい演奏をしています。各ボタンにテキストを割り当てたい。

次のようにstrings.xmlを設定しています。

<string name="quote01">quote01</string>
<string name="quote02">quote02</string>
<string name="quote03">quote03</string>

main.xml では、buttonIds を次のように設定しています。

    final int[] buttonIds = { R.id.button01, R.id.button02, R.id.button03, 
        R.id.button04, R.id.button05, R.id.button06, 
        R.id.button07, R.id.button08, R.id.button09, 
        R.id.button10, R.id.button11, R.id.button12, 
        R.id.button13, R.id.button14, R.id.button15, 
        R.id.button16, R.id.button16, R.id.button17, 
        R.id.button18, R.id.button19, R.id.button20, 
        R.id.button21, R.id.button22, R.id.button23, 
        R.id.button24, R.id.button25 };

ボタンのテキストを次のように割り当てて、機能させることができます。

Button s01 = (Button) findViewById(R.id.button01); 
s01.setText(this.getString(R.string.quote01));
Button s02 = (Button) findViewById(R.id.button02); 
s02.setText(this.getString(R.string.quote02));
Button s03 = (Button) findViewById(R.id.button03); 
s03.setText(this.getString(R.string.quote03));

しかし、コードの繰り返しを避けるためにループを使用したいと思います。以下のような非稼働ループがあります。

for(int i = 0; i < buttonIds.length; i++) { 
    Button soundButton = (Button)findViewById(buttonIds[i]); 
    soundButton.setText(this.getString(R.string.buttonIds[i]);
}

しかし、上記の 3 行目では、buttonIds をフィールドに解決できません。buttonIds[1] を括弧または括弧で囲んでみましたが、構文が正しくありません。これは非常に簡単な質問だと思いますが、それは私を幻惑しています。助言がありますか?

前もって感謝します!Maytag87

4

1 に答える 1

1

これが役立つかどうかを確認してください:

Resources res = getResources();
for(int i = 0; i < buttonIds.length; i++) { 
    Button soundButton = (Button)findViewById(buttonIds[i]); 
    soundButton.setText(res.getIdentifier("quote" + (i < 10 ? "0" + i : i), "string", getPackageName()));
}

また、文字列セットquote01は から始まり、ループは から始まるi = 0ため、2 つの値を同期する必要があります。

于 2012-09-03T17:38:51.107 に答える