【问题标题】:Android Studio: How to add a "start" button to CountDownTimerAndroid Studio:如何向 CountDownTimer 添加“开始”按钮
【发布时间】:2014-10-07 21:59:33
【问题描述】:

伙计们,我到处寻找这个问题,遗憾的是,我找不到解决方案:/ 我的问题在 CountDownTimer 中,我想通过按下按钮来启动它,但现在它会自动启动。这是我的代码:

`public class newgame extends Activity {
    int guessCount = 0;
    TextView textCount;
    Button buttonCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_newgame);

    final TextView textView = (TextView) findViewById(R.id.textView);
    buttonCount = (Button) findViewById(R.id.button);

    buttonCount.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
            guessCount++;
            textView.setText("Clicks: " + guessCount);
        }
    });
    final TextView textic = (TextView) findViewById(R.id.textView2);
    CountDownTimer Count = new CountDownTimer(15000, 1000) {
        public void onTick(long millisUntilFinished) {
            int seconds = (int) ((millisUntilFinished / 1000));
            textic.setText("Time Left: " + millisUntilFinished / 1000);
        }

        public void onFinish() {
            textic.setText("Time's Up!");
            buttonCount.setEnabled(false);
        }



         };
    Count.start();
}`

有人可以帮帮我吗? :)

【问题讨论】:

    标签: java android button android-studio countdowntimer


    【解决方案1】:

    CountDownTimer 有一个start() 方法,您可以将其用于按钮点击事件,例如

    CountDownTimer timer = new CountDownTimer(5000, 100) {
    
        @Override
        public void onTick(long millisUntilFinished) {
            //your code     
        }
    
        @Override
        public void onFinish() {
            // your code
        }
    };
    timer.start();
    

    【讨论】:

      【解决方案2】:

      在您的活动中使用此代码,我希望您能找到答案...

      公共类 MainActivity 扩展 Activity {

      CountDownTimer countDownTimer;
      TextView tvTimer;
        long startTime = 1 * 1000;
        long interval = 1 * 100;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      
          tvTimer=(TextView)findViewById(R.id.tvTimer);
          countDownTimer = new MyCountDownTimer(startTime, interval);
          findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
      
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  countDownTimer.start();
              }
          });
      }
      public class MyCountDownTimer extends CountDownTimer 
      {
          int  count=10;
          public MyCountDownTimer(long startTime, long interval) 
          {
              super(startTime, interval);
          }
      
          @Override
          public void onFinish() {
              tvTimer.setText("Time's Up...!");
      
          }
      
          @Override
          public void onTick(long millisUntilFinished) {
              int interval=(int)millisUntilFinished/100;
                   tvTimer.setText("0"+interval);
          }
      }
      

      }

      【讨论】:

      • 不鼓励仅使用代码的答案,而且最终没有帮助。尝试添加一些关于为什么这段代码应该有帮助以及它在做什么的解释。
      【解决方案3】:

      试试这个代码

                private TextView txtCount, textViewTimer;
      
        private Button btnCount, btnRestart;
      
         int count = 0;
      
         boolean[] timerProcessing = { false };
      
        boolean[] timerStarts = { false };
      
         private MyCount timer;
      
      
            @Override
      
      
      
      
           protected void onCreate(Bundle savedInstanceState) {
      
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      txtCount = (TextView) findViewById(R.id.textView1);
      txtCount.setText(String.valueOf(count));
      btnCount = (Button) findViewById(R.id.button1);
      btnRestart = (Button) findViewById(R.id.button2);
      
      textViewTimer = (TextView) findViewById(R.id.textView2);
      
      timer = new MyCount(10000, 1);
      
      btnCount.setOnClickListener(new View.OnClickListener() {
          public void onClick(View arg0) {
              // start timer once when button first click
              if (!timerStarts[0]) {
                  timer.start();
                  timerStarts[0] = true;
                  timerProcessing[0] = true;
              }
      
              if (timerProcessing[0]) {
                  count++;
                  txtCount.setText(String.valueOf(count));
              }
          }
      });
      btnRestart.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              timerProcessing[0] = true;
              count = 0;
              txtCount.setText(String.valueOf(count));
              timer.cancel();
              timer.start();
          }
      });
      
      
         }
      
      
      
      
               public class MyCount extends CountDownTimer {
      
      public MyCount(long millisInFuture, long countDownInterval) {
      
          super(millisInFuture, countDownInterval);
      
      }
      
      @Override
      public void onFinish() {
          textViewTimer.setText("0:000");
          timerProcessing[0] = false;
      }
      
      @Override
      public void onTick(long millisUntilFinished) {
          textViewTimer.setText("" + millisUntilFinished / 1000 + ":"
                  + millisUntilFinished % 1000);
      
      }
      

      }

      【讨论】:

      • 不鼓励仅使用代码的答案,而且最终没有帮助。尝试添加一些关于为什么这段代码应该有帮助以及它在做什么的解释。
      【解决方案4】:

      您必须将 Count.start() 放在某个 onClick 方法中。这些是基础知识,您可以轻松找到有关按按钮处理单击事件的信息。不要偷懒。

      【讨论】:

      • 如果计数器已启动,请不要忘记保留信息。使用一些布尔变量,在 onClick 你可以简单地做: if (!started){ Count.start();开始=真;然后你应该为停止计数器提供额外的逻辑(onStop 可以是一个好地方:Count.stop(); started = false) 等等等等。欢迎来到多线程环境
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多