我正在制作应用并使用处理程序。在A类中,显示一些带有文本的按钮,然后使用
handler.postDelayed(new Runnable(){@Override public void run() {blankbutton();}}, 10000);
这样当通过10秒时,按钮上的文字将被删除。
但是,如果用户此时按下复位按钮(在另一个班级中),比如说,在处理程序计算时间后3秒,那么将在按下复位后的7秒内发生的事情将是按钮上的文本擦除:处理程序不会停止。
如何在另一个类中停止处理程序(在重置类中)?我已经检查了一些类似的问题,答案是
handler.removeCallbacks(Runnable);
但是,在重置课程下,它会显示“Runnable cannot be resolved to a variable
”
非常感谢!!
答案 0 :(得分:2)
您的问题是您正在创建一个匿名的内部Runnable对象。当您尝试删除回调时,您将无法引用它。这样的事情会使它发挥作用:
Runnable txtClearRun = new Runnable(){
public void run() {
blankbutton();
}
};
handler.postDelayed(txtClearRun, 10* 1000);
.
.
.
handler.removeCallbacks(txtClearRun);
不同之处在于,您可以通过这种方式将runnable对象分配给变量txtClearRun
,以便以后在想要将其传递给removeCallbacks();