1

这是扩展 CountDownTimer 的类。

public class timer extends CountDownTimer{

private final long startTime = 50000;
private final long interval = 1000;
int timeElapsed;

public timer(long starttime, long interval){
    super(starttime, interval);     
}

@Override
public void onFinish() {        

}

@Override
public void onTick(long millisUntilFinished) {
    timeElapsed = (int)(startTime - millisUntilFinished);       
}   

}

这是主要课程。

long millisUntilFinished = 0;
        timer myTime = new timer(5000, 1000);
        myTime.onTick(millisUntilFinished);

        if(myTime.onTick(millisUntilFinished) == 2000){
            //do the next process
        }

这段代码告诉

运算符 == 对于您的类型未定义 void, int

我想如何获取覆盖方法中的 timeElapsed 值,并且该值可以在主类中用于下一个进程。

请帮我解决这个问题。感谢提前。

4

2 回答 2

1

返回类型意味着该void方法不返回任何值,因此当您尝试将 void 值与 进行比较时会发生编译器错误2000

这里最好的解决方案是简单地创建一个 getter 方法来访问timeElapsed,然后在相等比较中使用该方法。

public class timer extends CountdownTimer {
    ...
    public int getTimeElapsed() {
        return timeElapsed;
    }
    ...
}

然后,在您的 main 方法中,您可以使用该 getter 方法。

...
if (myTime.getTimeElapsed() == 2000) {
    // do the next process
}
...
于 2012-10-23T02:20:03.587 回答
1

您的方法调用myTime.onTick(millisUntilFinished)不会返回任何内容,因此会出现错误。

我认为您正在尝试比较timeElapsed您可以按照以下方式进行的操作。

getTimeElapsed()timer类中添加一个方法:

   public int getTimeElapsed(){
      return timeElapsed;
   }

然后在你的主要方法中,你可以这样做:

    long millisUntilFinished = 0;
    timer myTime = new timer(5000, 1000);
    myTime.onTick(millisUntilFinished);

    if(myTime.getTimeElapsed() == 2000){
        //do the next process
    }
于 2012-10-23T02:20:46.440 回答