很抱歉标题含糊不清,
以下是麻烦。我想使用x变量迭代这个名称中使用1 -9值的对象,(R.id.imageButtonx
)
for (int x = 1; x <10; x++)
mm.add((Button) findViewById(R.id.imageButtonx));
//只是为了更深入一点。这适用于Android。
我从一个Button数组开始然后我这样做了:
main_Menu = new Button[] {
(Button) findViewById(R.id.imageButton1),
(Button) findViewById(R.id.imageButton2),
(Button) findViewById(R.id.imageButton3),
(Button) findViewById(R.id.imageButton4),
(Button) findViewById(R.id.imageButton5),
(Button) findViewById(R.id.imageButton6),
(Button) findViewById(R.id.imageButton7),
(Button) findViewById(R.id.imageButton8),
(Button) findViewById(R.id.imageButton9)
};
所以我可以做一个两行的foreach循环来附加onbuttonclicklistener。
所以我想知道我是否可以将十行减少为两行。我搬到了一个ArrayList。我原本希望它是方括号,括号,或单引号,或双引号来绕过x变量,但从其中一个答案,似乎不可能。
答案 0 :(得分:4)
Java不会对&#34; x&#34;进行文本替换。在带有循环变量的imageButtonx中。
但是,您可以创建一个imageButton ID数组,并按索引引用每个ID。
答案 1 :(得分:0)
我认为你不能将变量用作你想要添加的对象名称(实际上是任何对象名称)的一部分。
答案 2 :(得分:0)
如果你的意思是android
像这样使用Resources.getIdentifier()
int id = getResources().getIdentifier("imageButton" + x, "id", null);
String s = getString(id);
答案 3 :(得分:0)
根据您的具体需求,您可以使用单独的函数执行类似操作,该函数根据参数返回其中一个变量。有点像:
public Button getButton(int index) {
switch (index) {
case 0: return button0;
case 1: return button1;
...
default: throw new ArgumentOutOfRangeException("index");
}
}
然后你可以用以下内容替换你的循环:
for (int x = 1; x < 10; x++)
mm.add((Button) findViewById(R.id.getButton(x)));
答案 4 :(得分:0)
怎么样
int[] imageButtons = { R.id.imageButton0, R.id.imageButton1, R.id.imageButton2, R.id.imageButton3, ...};
for (int x = 0; x <9; x++)
mm.add((Button) findViewById(imageButtons[i]));
这应该适合您。 :)