Java android:停止处理程序

Java android:停止处理程序,java,android,handler,Java,Android,Handler,我正在制作一个应用程序并使用handler。在A类中,显示一些带有文本的按钮,然后使用 handler.postDelayed(new Runnable(){@Override public void run() {blankbutton();}}, 10000); 这样,当超过10秒时,按钮上的文本将被擦除 但是,如果用户此时按下重置按钮(在另一个类中),例如,在处理程序计时3秒后,则会发生的情况是,在按下重置按钮7秒后,按钮上的文本将被删除:处理程序不会停止 我如何停止另一个类(在res

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

handler.postDelayed(new Runnable(){@Override public void run() {blankbutton();}}, 10000); 
这样,当超过10秒时,按钮上的文本将被擦除

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

我如何停止另一个类(在reset类中)中的处理程序?我检查了一些类似的问题,答案是

handler.removeCallbacks(Runnable);
但是,在reset类下,它表示“
Runnable不能解析为变量”


非常感谢

您的问题是您正在创建一个匿名的内部可运行对象。当您试图删除回调时,您将无法引用它。像这样的东西可以让它工作:

Runnable txtClearRun = new Runnable(){
  public void run() {
    blankbutton();
  }
};
handler.postDelayed(txtClearRun, 10* 1000);
.
.
.
handler.removeCallbacks(txtClearRun);
不同之处在于,通过这种方式,您将可运行对象分配给一个变量
txtClearRun
,以便在稍后将其传递到
removeCallbacks()时可以引用它