0

我正在制作一个应用程序并使用处理程序。在A类中,显示一些带有文本的按钮,然后使用

handler.postDelayed(new Runnable(){@Override public void run() {blankbutton();}}, 10000); 

这样当通过 10 秒时,按钮上的文本将被删除。

但是,如果此时用户按下重置按钮(在另一个类中),例如,在处理程序计算时间后 3 秒后,那么将发生的是在按下重置后 7 秒,按钮上的文本将被删除:处理程序不会停止。

我怎样才能停止另一个类中的处理程序(在重置类中)?我已经检查了一些类似的问题和答案是

handler.removeCallbacks(Runnable);

但是,在重置类下它说“ Runnable cannot be resolved to a variable

非常感谢!!

4

1 回答 1

2

您的问题是您正在制作一个匿名的内部 Runnable 对象。当您尝试删除回调时,您将无法参考它。这样的事情会让它工作:

Runnable txtClearRun = new Runnable(){
  public void run() {
    blankbutton();
  }
};
handler.postDelayed(txtClearRun, 10* 1000);
.
.
.
handler.removeCallbacks(txtClearRun);

不同之处在于,通过这种方式,您可以将可运行对象分配给一个变量txtClearRun,以便以后在将其传递给时可以引用它removeCallbacks();

于 2012-12-16T17:40:05.920 回答