我有一个处理程序和一个runnable,Handler有一个从0到5运行的循环。当我在处理程序中启动runnable时它运行并将值增加到0到5.但是如果我双击或单击超过1次比如将temp的值高于5.如何在每次点击处理程序时重置(0)temp的值。
final Handler deneme = new Handler();
final Runnable post_score = new Runnable(){
public void run(){
Log.i("TAG", Integer.toString(temp));
temp++;
}
};
Button tv = (Button )findViewById(R.id.button1);
tv.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
temp = 0;
for(int i=0; i < 5;i++){
deneme.postDelayed(post_score, i *250);
}
}
});
答案 0 :(得分:0)
尝试将onClick()
替换为
public void onClick(View arg0) {
deneme.removeCallbacks(post_score);
temp = 0;
for(int i=0; i < 5;)
deneme.postDelayed(post_score, i *250);
}
}
答案 1 :(得分:0)
尝试这样做:
for (int i = 0; i < 5; i++) {
final temp = i;
deneme.postDelayed(new Runnable() {
public void run(){
Log.i("TAG", Integer.toString(temp));
}
}
}
将temp
作为全局变量并不是一个好主意。全局变量总是一个坏主意,顺便说一句。
答案 2 :(得分:0)
有很多方法可以做到这一点。
一种是制作临时本地和可运行的(非匿名)类
private static class CountRunnable implements Runnable {
private int temp = 0;
@Override
public void run(){
Log.i("TAG", Integer.toString(temp));
temp++;
}
};
tv.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Runnable countRunnable = new CountRunnable()
for(int i=0; i < 5;i++){
deneme.postDelayed(countRunnable, i *250);
}
}
});