让我们假设我在下面有一个类似的课程。首先,我在公共范围内有一个CountDownTimer
,但它现在为空,我有一个startCountDownTimer
方法来启动我的CountDownTimer
,在startCountDownTimer
方法中设置我的{{1}但之后我想在用户单击后退按钮时取消countdowntimer
,但是你知道我在公共范围内创建了我的变量而且它是null,所以当我试图取消countdowntimer
之外的时候方法我得到NullPointerException,那么如何取消CountDownTimer
? (我不想在公共范围内创建我的所有CountDownTimer
。)
CountDownTimer
答案 0 :(得分:0)
尝试使用布尔值解决此问题。
尝试调用countdowntimer.cancel()
并且countdowntimer
未初始化时,您收到NullPointerException。因此,除非初始化countdowntimer
,否则不要执行该行代码。
在countdowntimer
声明后声明一个全局布尔值。
Boolean timerOn = false;
现在,在startCountdownTimer()
方法内,在启动计时器后,将timerOn
布尔值设置为true
。
在onBackPressed()
方法中,用以下代码替换代码:
@Override
public void onBackPressed() {
super.onBackPressed();
if (timerOn) {
countdowntimer.cancel();
timerOn = false;
}
}
这将确保仅在timerOn布尔值为true时才执行.cancel
方法,这只会在初始化计时器时执行。