这是我的for循环。 问题:我需要在按钮数组上获取监听器,并根据数组编号获取按钮,将一些文本附加到具有相同编号的 textview
数组。
问题是,我无法将 int i
获取到 public void 方法。如果我将其声明为我的主类,那么应用程序就会失败。当我将 i
值更改为某个实数时,它就起作用了。所以我发现问题是 - onClick 方法接收的是 null
而不是 i
。
for(int i=0; i<n;i++){
btninput.get(i).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
converswindow.get(i).append(Html.fromHtml("<b>Вы:</b> "+msginput.get(i).getText()+"<br />"));
msginput.get(i).setText("");
}
});
}
最佳答案
我不确定这是否有效,但请尝试:
for(int i=0; i<n; i++) {
final int j = i;
btninput.get(i).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
converswindow.get(j).append(Html.fromHtml("<b>Вы:</b> "+msginput.get(i).getText()+"<br />"));
msginput.get(j).setText("");
}
});
}
如果这不起作用,您可以使用 Android 的 View 标记机制向按钮添加数据。阅读有关 View.setTag(...)
和 View.getTag(...)
的更多信息。
关于java - for循环中的public void方法;无法接收循环变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6162078/