我有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

08-26 01:14