首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libgdx错误clickListener

Libgdx错误clickListener
EN

Stack Overflow用户
提问于 2015-01-29 10:28:14
回答 2查看 98关注 0票数 1

我有5个按钮,每个按钮都不能打印数字1,2,3,4,5,但每个按钮只能打印"5“。我的代码有什么问题吗?或者它在libgdx上的bug?我使用libgdx v1.2.0

代码语言:javascript
复制
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());
}
EN

回答 2

Stack Overflow用户

发布于 2015-01-29 12:22:10

试试这个简单的例子:

...//在您的Code addListener 中对此进行更改:

代码语言:javascript
复制
nextbutton.addListener(new ClickListenerOverflow(i) {

         @Override
         public void clicked(InputEvent event, float x, float y) {
             beli(n);
         }
     });

...//

将以下代码添加到您的类中:

代码语言:javascript
复制
private class ClickListenerOverflow extends ClickListener{

    int n;

    public ClickListenerOverflow(int n){
        this.n = n;
    }

}

当你点击call beli (i)i,然后它的值是5,就是后者赢得了for

票数 0
EN

Stack Overflow用户

发布于 2015-01-30 00:12:39

对于for循环,使用int而不是Integer。所有的单击侦听器都引用了相同的Integer实例,因为它是一个对象,而不是一个基元。

为了代码无歧义,我会将变量复制到最后一个int变量中,并将其用于单击侦听器,因此每个变量都使用一个单独的int,这一点非常清楚。

代码语言:javascript
复制
final int index = i;
...
//use index in the ClickListener instead of i 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28206043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档