我试图通过遍历xml中的按钮(因为我有很多按钮)使生活变得轻松得多。为什么这不起作用?
Button bf[];
public static final int[] Buttons = { R.id.b1, R.id.b2, R.id.b3, R.id.b4,
R.id.b5, R.id.b6, R.id.b7, R.id.b8, R.id.b9, R.id.bBack,
R.id.bClearAll, R.id.bClear };
我有一个静态的final int,其中保存有一些按钮,这些按钮在标题中列出。
在我的onCreate方法中,我设置了按钮:
for (int i = 1; i < 10; i++) {
bf[i] = (Button) findViewById(Buttons[i - 1]);
bf[i].setOnClickListener(this);
}
好又容易吧?但是然后当我尝试在开关和大小写中引用它们时(在实现的onClickListener方法中,我遇到了问题:
for (int i = 1; i < 10; i++) {
case Buttons[i-1]:
Toast.makeText(this, bf[i].getText(), Toast.LENGTH_SHORT).show();
break;
}
这不起作用,因此我只尝试了一个参考:
switch (v.getId()) {
case Buttons[0]:
Toast.makeText(this, bf[1].getText(), Toast.LENGTH_SHORT).show();
break;
哪一个也不起作用?!?!请帮助?
最佳答案
v您的视图在onClickListener中是吗?
为什么不使用:
Button b = (Button) v;
Toast.makeText(this, b.getText(), Toast.LENGTH_SHORT).show();
其他一些要点:
您没有发布完整的代码,但是我想您可以将Buttons数组更改为private。
也许您甚至不需要bf []
编辑:另外,我建议使用此for循环在所有按钮之间循环以使其更加灵活:
for (int i : Buttons) {
Button b = findViewById(i);
b.setOnClickListener(myClickListener);
}