不是有timer吗,点击后,enable=false,开始计时,到点enable=true

解决方案 »

  1.   

    同意楼上,计时器控制你的boolean标志位,简单粗暴有效
      

  2.   

    //这是倒计时线程,每隔1秒会通知一次UI线程更新
    private class TimerTask extends AsyncTask<String, String, String> { @Override
    protected void onPreExecute() {
    super.onPreExecute();
    mVCodeBtn.setBackgroundResource(R.color.text_gray);
    mVCodeBtn.setClickable(false);
    } @Override
    protected String doInBackground(String... params) {
    for (int i = 60; i >= 0; i--) {
    onProgressUpdate(String.valueOf(i));
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    } return null;
    } @Override
    protected void onProgressUpdate(String... values) {
    Message msg = new Message();
    msg.what = Integer.valueOf(values[0]);
    handler.sendMessage(msg);
    super.onProgressUpdate(values);
    } }
    // 下面是UI线程收到消息后更新,当为0时倒计时结束,会重新打开按钮点击
    private Handler handler = new Handler() { @Override
    public void handleMessage(Message msg) {
    if (msg.what == 0) {
    mVCodeBtn.setBackgroundResource(R.color.patient_theme);
    mVCodeBtn.setClickable(true);
    mVCodeBtn.setText(R.string.btn_verification_code);
    } else {
    mVCodeBtn.setText("重新获取 " + msg.what);
    } } };
      

  3.   

    话说你这里还写个handler干吗?直接在onprogressupdate里面更新不就行了?