for(i = 0; i< 26; i ++){
btnAlpha[i] = new Button(this);
btnAlpha[i].setBackgroundColor(Color.TRANSPARENT);
btnAlpha[i].setTextColor(Color.GREEN);
btnAlpha[i].setText(Character.toString ((char)(j+i)));
btnAlpha[i].setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
//Want to get the text from the current button.
btnAlpha[i].getText();
//But it gives error that "i" cannot be accessed.
}});
我得到的错误是“不能引用在不同方法中定义的内部类中的非最终变量”。但我需要在正确的时间得到文本。怎么做?还有其他办法吗? 请帮助!
答案 0 :(得分:14)
Button是View的子类,因此onClick的参数v是被单击的Button。尝试
public void onClick(View v) {
((Button) v).getText();
}
答案 1 :(得分:0)
在for循环中创建一个新变量final int x = i;
,并使用x
代替i
方法中的onClick
编辑:实际上我不确定这是否会正常工作。哎呀。 Kype P的答案看起来很不错。