2015-01-29 2 views
1

У меня есть 5 кнопок и вы хотите, чтобы каждая кнопка не могла печатать номер 1,2,3,4,5. но каждая кнопка печатает только «5». Что-то не так с моим кодом? Или его ошибка на libgdx? Я использую libgdx v1.2.0Ошибка Libgdx clickListener

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()); 
} 
+0

Что такое 'j' в вызове' beli (j); '? Вы не указали исходный код thta определяет 'j' –

+0

Извините неправильно печатать Я имею в виду« i » –

+0

Является ли эта Java? Затем вы должны включить тег [tag: java]. –

ответ

0

попробовать этот простой пример:

... // Изменения в вашем коде 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; 
    } 

} 

при нажатии кнопки называют beli (i), i то его значение равно 5, то последний, кто выиграл for.

0

Используйте int вместо Integer для цикла for. Все ваши прослушиватели кликов ссылаются на один и тот же экземпляр Integer, потому что это объект, а не примитив.

Для несимметричности кода я бы скопировал переменную в конечную переменную int и использовал ее для прослушивателя кликов, поэтому совершенно ясно, что для каждого используется отдельный int.

final int index = i; 
... 
//use index in the ClickListener instead of i