Я думаю, что можно создать локальную копию переменной i
. Попробуйте это:
@Override
public void onClick(View v) {
final TextView tv = (TextView) findViewById(R.id.tvSayac);
int i = 1;
do {
final int localCopy = i; // Create here a final copy of i
try {
new Thread(new Runnable() {
public void run() {
tv.post(new Runnable() {
public void run() {
// use here the copy
tv.setText(Integer.toString(localCopy));
}
});
}
}).start(); // Don't forget to start the Thread!
i++;
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (i < 16);
}
Путем создания окончательной локальной копии:
- компилятор больше не будет жаловаться
- из-за Java-копий по значению вы увеличите
i
, а не localCopy
.
Полагаю, вы тоже хотите запустить поток ...
РЕДАКТИРОВАТЬ: Действительно, вы были правы. Вы должны создать локальную конечную копию внутри цикла. Проверьте новый код.