好的,所以我是android java编程的新手。我一直在寻找答案已经有一段时间了,但没有成功。
这是一个例子:
setAlarmHandler(difference); //(difference is in MS)
public void setAlarmHandler (long difference) {
Handler myHandler = new Handler();
Runnable setAlarm = new Runnable() {
public void run() {
System.out.println("test");
}
};
// Schedule the execution
myHandler.postDelayed(setAlarm, difference);
}
public void addListenerOnCheckBox1() {
checkBox1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(checkBox1.isChecked()){
myHandler.removeCallbacks(setAlarm); }
}
});
}
所以我尝试从
"addListenerOnCheckBox1()"
取消处理程序,但出现错误"myHandler cannot be resolved"
。那么,我需要做什么才能从该方法中取消处理程序?另外,如果我只是忽略了“取消部分”(删除了"myHandler.removeCallbacks(setAlarm);")
,则该应用程序在我的模拟器中运行得非常好。我敢肯定,我正在寻找的答案会让我感到自己很愚蠢,但是我无法独自完成这项工作。非常感谢您的帮助!
最佳答案
Handler myHandler
将此声明为实例变量。
您已经在myHandler
中声明并初始化了setAlarmHandler
,这使其在该方法中处于本地状态
public void setAlarmHandler (long difference) {
Handler myHandler = new Handler();// local to setAlaramHandler
对于相同
Runnable setAlarm