如何停止倒数计时器.....?

时间:2014-03-01 21:18:40

标签: android timer

我在阻止CountDownTimer时遇到问题。我搜索了很多,但无法理解如何做到这一点。

以下是我的MainActivity。如果按下RadioButton b ,我该如何停止计时器?

import java.util.Timer;
import java.util.TimerTask;

import android.os.Bundle;
import android.os.CountDownTimer;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    TextView mTextField;
    RadioButton a, b, c, d, e;
    final static long interval = 1000;
    long timeout = 15000;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTextField = (TextView) findViewById(R.id.tv);
        a = (RadioButton) findViewById(R.id.rB1a);
        b = (RadioButton) findViewById(R.id.rB2a);
        c = (RadioButton) findViewById(R.id.rB3a);
        d = (RadioButton) findViewById(R.id.rB4a);
        e = (RadioButton) findViewById(R.id.rB5a);

        //Timer timer = new Timer();
        //timer.scheduleAtFixedRate(task, interval, interval);

        TimerTask task = new TimerTask() {
            @Override
            public void run() {

                timeout = timeout - interval;

                if (timeout == 0) {
                    this.cancel();
                    displayText("finished");
                    return;
                }

                if (timeout >= 0) {
                    displayText("time remaining: " + String.valueOf(timeout / 1000));
                    a.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View arg0) {
                            Toast.makeText(getApplicationContext(), "Wrong Answer!!! ", Toast.LENGTH_LONG).show();
                            Intent openWordlist = new Intent("com.example.the_vocab_master.AA");
                            startActivity(openWordlist);
                        }
                    });

                    b.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View arg0) {
                            Toast.makeText(getApplicationContext(), "GREAT...!!! ", Toast.LENGTH_LONG).show();
                        }
                    });
                }

                //displayText("time remaining: " + String.valueOf(timeout / 1000));
            }
        };

        Timer timer = new Timer();
        timer.scheduleAtFixedRate(task, interval, interval);
    }

    private void displayText(final String text) {
        this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                mTextField.setText(text);
            }
        });
    }
}

1 个答案:

答案 0 :(得分:0)

取消定时器使用

timer.cancel();
在你的onClick监听器中

。在你的代码中很难看到,因为缩进非常糟糕,但我认为你需要在类中声明你的timer变量,而不是onCreate();

此外,我建议您在计时器setOnClickListener方法的两个run()调用之外。你正在做的事情没有意义。