1

私は Android で CountDownTimer をいじっていて、ある種のジレンマに陥りました。私のコードには、次のものがあります。

public class mCountDownTimer extends CountDownTimer{
    protected boolean hasFinished = false;
    public mCountDownTimer(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
        // TODO Auto-generated constructor stub
    }
    public void onFinish(){
        hasFinished = true;
    }
    @Override
    public void onTick(long millisUntilFinished) {
        // TODO Auto-generated method stub

    }
}

基本的に、CountDownTimer が終了したかどうかを確認したいと考えています。しかし、呼び出したい関数には、次のようなコードがあります。

public void function(){
public boolean finished = false;
    if(interrupted)
        countDownTimer.cancel();
    if(temporaryCountHolder == false){
        countDownTimer.start();
        interrupted = true;
    }
}

タイマーが終了したかどうかを確認するにはどうすればよいですか? 私は言う何かを実装したい:

 if(countDownTimer.hasFinished == true){
        Time now = new Time(); //finds the current time
        now.setToNow(); 
        String lsNow = now.format("%m-%d-%Y %I:%M:%S");
        lsNow += " just Started\n";
        try {
            dumpToFile("StepsChanged", lsNow);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 }

しかし、ステートメントを直後に置くと

if(temporaryCountHolder == false) 

ステートメントの場合、hasFinished を含む if ステートメントは常に false と評価されます。タイマーが終了した場合にのみ時間を記録できるようにするにはどうすればよいですか?

4

2 に答える 2

0

コメントによると、偽の値を取得している理由は、タイマーが停止する前にステートメントを実行しているためです。

あなたは以下のように行くことができます、

@Override
public void onFinish(){
        hasFinished = true;
        Time now = new Time(); //finds the current time
        now.setToNow(); 
        String lsNow = now.format("%m-%d-%Y %I:%M:%S");
        lsNow += " just Started\n";
        try {
            dumpToFile("StepsChanged", lsNow);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

単純に時間を記録するには、これらのメソッドを countdowntimer クラスの onFinish メソッドに移動するだけです。dumpToFileそれが別のクラスのメソッドであるかどうか、それを静的メソッドにして使用できるかどうか、または適切な代替メソッドを使用できるかどうかはわかりません。お役に立てれば。

于 2013-04-11T06:48:42.907 に答える