我有5个按钮,并且希望每个按钮不能打印1,2,3,4,5。但每个按钮仅打印“ 5”。我的代码有什么问题吗?还是它在libgdx上的错误?我使用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());
}
最佳答案
为循环使用int而不是Integer。您的所有单击侦听器都引用Integer的相同实例,因为它是一个对象而不是基本类型。
对于代码无歧义性,我会将变量复制到最终的int变量,并将其用于单击侦听器,因此绝对清楚地为每个变量使用单独的int。
final int index = i;
...
//use index in the ClickListener instead of i