2012-03-03 76 views
0

这是它的外观现在:重新启动倒计时钟

final CountDownTimer countdown = new CountDownTimer(5000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     clock.setText("Seconds Remaining: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
     qcount++; 

     if (qcount < 10) 
     { 
      this.start(); 
      switch (diff) { 

      case 0: //Novice difficulty 

,但它说,倒计时变量不使用,它不会在应用程序运行在所有。

+0

A)变量不以大写字母开头B)您试图递归引用您正在创建的事物,这就是为什么它告诉您确实尚未初始化它。 – 2012-03-03 18:13:50

+0

所以,如果我明白你的意思,你是说我必须在此之外创建一次?倒计时的声明看起来如何? – nexus490 2012-03-03 18:15:03

回答

1

您正试图在将实例化它的匿名类中使用Countdown。倒计时是该类的一个实例,onFinish()在该实例上被调用。

你应该调用onFinish()实例上的start()方法,所以使用'this'。

this.start(); 

编辑:看看吧,如果你是简单的创建一个新的类,它基本上是自己在做什么。在新的类定义中,“倒计时”不是一个变量,所以你不能使用它。您只需调用对象onFinish()上的start即可。但是,由于您使用的是匿名类,因此仍然可以从匿名类中访问外部类的变量,这会导致混淆和错误。

+0

我不确定我是否遵循,你能详细说明一下吗? – nexus490 2012-03-03 18:21:10

+0

我试过改变它,所以它说this.start();在onFinish方法现在它告诉我,我的倒计时变量是未使用的,并且当我启动应用程序时,定时器根本不运行。 – nexus490 2012-03-03 18:36:20

+0

除非你使用eventhandlers,onTick打电话。示例代码中没有足够的信息来确定究竟出了什么问题。 – 13Tazer31 2012-03-03 18:45:03