بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ادامه دادن شمارشگر تایمر معکوس بعد از توقف

مدیریت گفتگو
amir.kenarang 10 سال پیش
آخرین تغییر: 10 سال پیش

خسته نباشید

من یه برنامه تایمر معکوس نوشتم ولی یه مشکل داره، وقتی بعد از شروع تایمر کلید STOP رو میزنم و بعدش دوباره START میزنم، به جای این که از ادامه شروع بشه از اول شروع میشه. خیلی جست و جو کردم اما جوابی براش پیدا نکردم.

برای گرفتن اعداد از timePicker استفاده کردم

 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static TextView countdownTimerText;
private static Button startTimer, resetTimer;
private static TimePicker timepicker;
private static CountDownTimer countDownTimer;
private static int time;
private static int noOfMinutes, noOfSeconds;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

countdownTimerText = (TextView) findViewById(R.id.countdownText);
startTimer = (Button) findViewById(R.id.startTimer);
resetTimer = (Button) findViewById(R.id.resetTimer);
timepicker = (TimePicker) findViewById(R.id.timePicker1);

timepicker.setIs24HourView(true);
setListeners();
}


private void setListeners() {
startTimer.setOnClickListener(this);
resetTimer.setOnClickListener(this);
}


@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.startTimer:
if (countDownTimer == null) {
startTimer.setText("Start Timer");
noOfMinutes = timepicker.getCurrentHour() * 60 * 1000;
noOfSeconds = timepicker.getCurrentMinute() * 1000;
time = noOfMinutes + noOfSeconds;
startTimer(time);//start countdown
startTimer.setText("Stop Timer");
} else {
stopCountdown();
startTimer.setText("Start Timer");
}
break;

case R.id.resetTimer:
stopCountdown();
startTimer.setText("Start Timer");
countdownTimerText.setText("00:00:00");
break;
}
}


private void stopCountdown() {
if (countDownTimer != null) {
countDownTimer.cancel();
countDownTimer = null;
}
}

private void startTimer(int time) {
countDownTimer = new CountDownTimer(time, 1000) {
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;

String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
countdownTimerText.setText(hms);//set text
}

public void onFinish() {

countdownTimerText.setText("TIME'S UP!!");
countDownTimer = null;
startTimer.setText("Start Timer");
}
}.start();
}
}

نظرات

k112 10 سال پیش
چون داری از اول زمان میفرستی باید همون رو بفرستی به تابع ... یعنی وقتی کلیک میشه شما زمان میگیری که ربطی به زمان گذاشته شده نداره!

پاسخ‌ها 1

amir.kenarang 10 سال پیش

یعنی کسی نیست که بخواد جواب این سوالو بده؟

خواهشا کمک کنین دوستان

نظرات

mosafer 10 سال پیش
یه متغیر ایجاد کن و در رویداد کلیک STOP مقدار شمارنده رو بریز توی اون متغیر و بعد در رویداد کلیک START دوباره این متغیر رو با شمارنده جمع کن

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .