eclipse for循环分配按钮字符串

时间:2012-09-03 17:31:11

标签: java android

我一直在尝试开发一个简单的声板的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]周围加上括号或parantheis,但我的语法不对。我相信这是一个非常简单的问题,但它正在让我感到满意。有什么建议吗?

提前致谢! Maytag87

1 个答案:

答案 0 :(得分: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开始,因此您必须同步这两个值。