我有5个按钮,每个按钮都不能打印数字1,2,3,4,5,但每个按钮只能打印"5“。我的代码有什么问题吗?或者它在libgdx上的bug?我使用libgdx v1.2.0
for (Integer i = 1; i <=5 ; i++){
tabeldalam=new Table(skin);
tabeldalam.row();
tabeldalam.add(new Label("GAmbar :", skin)).height(100).width(100);
tabeldalam.row();
tabeldalam.add(new Label("Harga",skin)).height(30).width(100);
tabeldalam.row();
TextButton nextbutton = new TextButton("Beli",skin);
nextbutton.setWidth(100);
nextbutton.setHeight(20);
nextbutton.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
beli(i);
}
});
tabeldalam.add(nextbutton).height(20).width(100);
tabelLuar= new Table(skin);
tabelLuar.add(tabeldalam).width(100).height(150);
}
private void beli(Integer i){
text2.setText(i.toString());
}发布于 2015-01-29 12:22:10
试试这个简单的例子:
...//在您的Code addListener 中对此进行更改:
nextbutton.addListener(new ClickListenerOverflow(i) {
@Override
public void clicked(InputEvent event, float x, float y) {
beli(n);
}
});...//
将以下代码添加到您的类中:
private class ClickListenerOverflow extends ClickListener{
int n;
public ClickListenerOverflow(int n){
this.n = n;
}
}当你点击call beli (i),i,然后它的值是5,就是后者赢得了for。
发布于 2015-01-30 00:12:39
对于for循环,使用int而不是Integer。所有的单击侦听器都引用了相同的Integer实例,因为它是一个对象,而不是一个基元。
为了代码无歧义,我会将变量复制到最后一个int变量中,并将其用于单击侦听器,因此每个变量都使用一个单独的int,这一点非常清楚。
final int index = i;
...
//use index in the ClickListener instead of i https://stackoverflow.com/questions/28206043
复制相似问题