私はCountDownTimerでカウントダウンタイマーをコーディングし、停止時間から再開できるようにしています。これまで私は他の質問を参照してこれを考え出すことができました。Androidのカウントダウンタイマーを再開する
public void onClick(View v) {
getResume();
if (getResume()==0) {
countDownTimer.start();
timerHasStarted = true;
startB.setText("STOP");
setResume(1);
Toast.makeText(this, getResume()+"",Toast.LENGTH_LONG).show();
} else if (getResume()==1) {
countDownTimer.cancel();
timerHasStarted = false;
startB.setText("RESTART");
setResume(2);
Toast.makeText(this, getResume()+"",Toast.LENGTH_LONG).show();
} else if (getResume()==2){
CountDownTimer rcdt = new MyCountDownTimer(s1, interval);
rcdt.start();
setResume(1);
}
}
のでgetResumeは()ちょうど私がtimerHasStartedは非常に私を助けていなかったので、私は、スイッチとして動作するために使用することができると思ったグローバルなint型の履歴書を、取得することです。しかし、resumeが2のときに新しいタイマーを作成しているので、タイマーを複数回再開できませんでした。このコードは、別のタイマーであるため一度だけ再開させます。rcdt.start()が発生した後でも、.cancel()もできません。明らかに私は重要なコンセプトを見逃していますが、私は検索で見つけられませんでした。 https://gist.github.com/bverc/1492672この場合とは異なり、私はmilisuntilfinished = s1を作成し、これを使用して新しいタイマーを開始します。これは行くの?または上記のコードを動作させるための方法がいくつかありますか? 助けてください!
countDownTimer= new MyCountDownTimer(s1, interval);
で(あなた== 2の場合で)
CountDownTimer rcdt = new MyCountDownTimer(s1, interval);
この行を置き換えるために
これは機能します!私は別の質問があります。 countDownTimer =新しいMyCountDownTimer(s1、interval);この行は実際に何をしていますか?異なるパラメータでcountDownTimerを再構築しますか? (s1、interval)? – Sasaki
あなたはいくつかのOOP(オブジェクト指向プログラミング)を知っていますか?もしあなたが本当にそれを学ぶことが重要なのではない。間もなくcountDownTimerは "String s1 = 'some value'"のような変数であると考えています。 "rcdt"で何をしたかは、String s2 = 'some value'のようにNEWオブジェクトを作成することです。あなたが置き換えた行は、s1 = 'some other value'のようなものでした。 –
完全に理解してください!ありがとうございました! – Sasaki