Android 如何在处理程序中重置变量
我有一个处理程序和一个可运行的,处理程序有一个从0到5运行的循环。当我在处理程序中启动runnable时,它会运行并将值增加到0到5。但是,如果我双击或单击超过1次,则temp的值将大于5。如何在每次单击处理程序时重置(0)临时值Android 如何在处理程序中重置变量,android,handler,Android,Handler,我有一个处理程序和一个可运行的,处理程序有一个从0到5运行的循环。当我在处理程序中启动runnable时,它会运行并将值增加到0到5。但是,如果我双击或单击超过1次,则temp的值将大于5。如何在每次单击处理程序时重置(0)临时值 final Handler deneme = new Handler(); final Runnable post_score = new Runnable(){ public void run(){ Log.i("TAG", Integer.
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);
}
}
});
final Handler deneme=new Handler();
最终可运行post_分数=新可运行(){
公开募捐{
Log.i(“TAG”,Integer.toString(temp));
temp++;
}
};
按钮tv=(按钮)findViewById(R.id.button1);
setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
温度=0;
对于(int i=0;i<5;i++){
deneme.postDelayed(post_分数,i*250);
}
}
});
尝试将onClick()替换为
public void onClick(View arg0) {
deneme.removeCallbacks(post_score);
temp = 0;
for(int i=0; i < 5;)
deneme.postDelayed(post_score, i *250);
}
}
public void onClick(视图arg0){
deneme.removeCallbacks(赛后得分);
温度=0;
对于(int i=0;i<5;)
deneme.postDelayed(post_分数,i*250);
}
}
尝试执行以下操作:
for (int i = 0; i < 5; i++) {
final temp = i;
deneme.postDelayed(new Runnable() {
public void run(){
Log.i("TAG", Integer.toString(temp));
}
}
}
for(int i=0;i<5;i++){
最终温度=i;
deneme.postDelayed(新的Runnable(){
公开募捐{
Log.i(“TAG”,Integer.toString(temp));
}
}
}
将temp
作为全局变量不是一个好主意。顺便说一句,全局变量总是一个坏主意。有很多方法可以做到这一点
一种是将temp设置为本地,并将其设置为可运行的(非匿名)类
私有静态类CountRunnable实现Runnable{
私人内部温度=0;
@凌驾
公开募捐{
Log.i(“TAG”,Integer.toString(temp));
temp++;
}
};
setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
Runnable countRunnable=new countRunnable()
对于(int i=0;i<5;i++){
deneme.postDelayed(可计数,i*250);
}
}
});
也许你的意思是删除回调
?
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);
}
}
});