如何在Handler中重置变量

时间:2012-02-23 09:57:14

标签: android handler

我有一个处理程序和一个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);
           }
      }
});

3 个答案:

答案 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);
        }
    }
});