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
        }

このコードは

演算子 == は 3 つの型 void、int に対して定義されていません

オーバーライド メソッドにある値 timeElapsed を取得する方法と、その値を次のプロセスのメイン クラスで使用できるようにする方法。

これを解決するのを手伝ってください。事前に感謝します。

4

2 に答える 2

1

戻り値のvoid型は、メソッドによって値が返されないことを意味するため、void 値を と比較しようとするとコンパイラ エラーが発生します2000

ここでの最善の解決策は、単純に getter メソッドを作成してアクセスtimeElapsedし、そのメソッドを等値比較で使用することです。

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

次に、メイン メソッドで、その 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 に答える