CountDownTimer について質問があります。ボタンをクリックするたびに、ユーザーが時間を+1ずつ増やすことができるアプリケーションを作成する必要があります。次に、ボタンのクリックが停止すると、3 秒間待機してからカウントダウンが開始されます。
以下にコードを貼り付けました。
私の問題は次のとおりです: 数値のインクリメントが正しく機能していないようですが、数値のインクリメント (onStop()) を停止すると、直接 (onFinish()) に移動するようです。OnTick() に移動して、毎秒 1 ずつ数値を減らす代わりに。これを修正するためにさまざまな方法を試しましたが、行き詰まりました。
誰かが私を正しい方向に導くことができますか? どんな助けでも大歓迎です。君たちありがとう!
public class MainActivity extends Activity {
Button incrementTime, startTime;
public TextView timedisplay;
public myTimer wavetimer;
private long millisInFuture;
private long millisUntilFinished;
private long countDownInterval;
private long onclicktime;
//private WaveInterface model;
public int countdown;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
incrementTime = (Button) findViewById(R.id.button2);
startTime = (Button) findViewById(R.id.button3);
incrementTime.setText("Increment Time");
startTime.setText("Start");
timedisplay = (TextView) findViewById(R.id.mycounter);
timedisplay.setText("Time Left: " + millisUntilFinished);
wavetimer = new myTimer (millisInFuture, 1000);
incrementTime.setOnClickListener(new OnClickListener(){
int countdown = 01;
/**
* On click button Listner
* @return
*/
public void onClick(View v) {
millisInFuture++;
return;
}
});
startTime.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
wavetimer.start();
}
});}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public class myTimer extends CountDownTimer {
public long millisInFuture;
private long countDownInterval;
public myTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
millisUntilFinished--;
if (millisUntilFinished == 0){
wavetimer.onFinish();
}
else {
timedisplay.setText("Time Left: " + millisUntilFinished / 1000);
}
}
@Override
public void onFinish() {
timedisplay.setText("Countdown Finished");
wavetimer.cancel();
}
public void onStop() {
millisInFuture = millisInFuture + 1;
timedisplay.setText("Time Left: " + millisInFuture);
}
数値を正しくインクリメントする方法がわかりません。私は複数の方法を試しましたが、失敗し続けています。どこを見ればいいのかわからない。どんな助けでも大歓迎です。君たちありがとう!