好的,所以我是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

09-28 05:05