我试图通过循环浏览我的 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 };
我有一个 static final int 包含我的一些按钮,它在标题中列出。 在我的 onCreate 方法中,我设置了我的按钮:
for (int i = 1; i < 10; i++) {
bf[i] = (Button) findViewById(Buttons[i - 1]);
bf[i].setOnClickListener(this);
}
很好很简单吧?但是当我尝试在 switch 和 case 中引用它们时(在我实现的 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 中的 View ,对吗? 你为什么不使用:
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);
}
关于android xml引用不适用于带有静态数组的开关和大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154418/