0

この質問が示唆するように、私はこのタイマーを使用しようとしています:

https://stackoverflow.com/questions/13806545/how-to-extend-countdown-timer-with-pause、

しかし、期待どおりに動作しません。一時停止/再開は正常に機能しますが、タイマーをキャンセルして再作成すると、最後に一時停止した時間からカウントが開始されます。初期値から始める必要があります。たとえば、カウンターの初期値は 3 分です。2 分で一時停止した場合、もう一度作成しようとすると 2 分から開始されます。何か助けはありますか?

    public class MainActivity extends ButtonMethods implements OnClickListener {



    private CountDownTimerWithPause timerPausable = null;
    int milis = 180000;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

timerPausable = new CountDownTimerWithPause(milis, 1000, true)
{

            @Override
            public void onTick(long millisUntilFinished)
            {
                timer.setText("" + millisUntilFinished / 1000);
            }

            @Override
            public void onFinish()
            {
                timer.setText("180");
                DisableRandomButtons();
@Override
    public void onClick(View v) {

        switch (v.getId()) {
        case R.id.bNewWord:

                if(clicked == false){
                    clicked = true;
                    timerPausable.create();             
                }
                else{
                    clicked = false;
                    timerPausable.cancel();
                    timerPausable=null;
                    milis=180000;
                    timerPausable.create();
            }
             break;
             case R.id.imageView2:
        tapsound.start();
        if(isclicked == false){
            isclicked = true;
            timerPausable.pause();
                   }
        else{
            isclicked = false;
        timerPausable.resume();
            }
            break;
4

1 に答える 1

1

コードを見ずに正確な問題が何であるかを言うのは難しいですが、私がしたことはcancel()、タイマーを呼び出してから、それnullをリセットすることでした。私のものは少し異なり、私はそれを扱いますonBackPressed()

@Override
public void onBackPressed()
{
    super.onBackPressed();
    timer.cancel();          // timer is a reference to my inner CountDownTimer class
    timer = null;
    secs = 10;
}

これがあなたが探しているものだと思います。わたしにはできる。

于 2013-04-01T13:15:06.143 に答える