CountDownTimer-用户递增。 问题

我有一个关于CountDownTimer的问题。 我必须创建一个应用程序,允许用户每次单击按钮时将时间时间增加+1。 然后在按钮停止点击后等待三秒钟,然后开始倒计时。

我在下面粘贴了我的代码。

我的问题是:我似乎无法使数字的增量正常工作,但似乎在我停止递增数字(onStop())后它直接进入(onFinish())。 而不是去OnTick()并将数字每秒减少1。 我已经尝试了很多方法来解决这个问题,但一直困扰着。

谁能引导我朝着正确的方向做什么? 任何帮助,将不胜感激。 感谢你们!

@SuppressWarnings("unused") public class MainActivity extends Activity { public int countdown; Button stoptime; public TextView timedisplay; public Timer wavetimer; private long millisInFuture; private long countDownInterval; private long onclicktime; private long finished; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); countdown = 01; stoptime = (Button) findViewById(R.id.button2); stoptime.setText("Stop Timer"); timedisplay = (TextView) findViewById(R.id.mycounter); timedisplay.setText("0"); wavetimer = new Timer (millisInFuture, 1000); finished = 0; stoptime.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) { wavetimer.onStop(); //try{ // Thread.sleep(3000); // wavetimer.start(); //} catch (InterruptedException e) { // e.printStackTrace(); // } //wavetimer.onTick(millisInFuture); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } public class Timer extends CountDownTimer { public long millisInFuture; private long countDownInterval = 1000; private long currentelapsed; private long methodlimit; private long lapsedperiod; public Timer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } public void onFinish() { if (millisInFuture == 0){ timedisplay.setText("Countdown Finished"); } else { timedisplay.setText("error"); } } public void onStop() { wavetimer.cancel(); millisInFuture = millisInFuture + 1; timedisplay.setText("Time Left: " + millisInFuture); } public void onTick(long millisUntilFinished) { millisInFuture = (millisInFuture - 1); timedisplay.setText("Time Left: " + millisInFuture / 1000); } } } 

将其添加到您的代码中;

 wavetimer.start(); 

🙂