آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

amir.kenarang  9 سال پیش  9 سال پیش
0 0

خسته نباشید

من یه برنامه تایمر معکوس نوشتم ولی یه مشکل داره، وقتی بعد از شروع تایمر کلید 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();
}
}
+1 0
چون داری از اول زمان میفرستی باید همون رو بفرستی به تابع ... یعنی وقتی کلیک میشه شما زمان میگیری که ربطی به زمان گذاشته شده نداره! (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
amir.kenarang  9 سال پیش
0 0

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

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

0 0
یه متغیر ایجاد کن و در رویداد کلیک STOP مقدار شمارنده رو بریز توی اون متغیر و بعد در رویداد کلیک START دوباره این متغیر رو با شمارنده جمع کن (9 سال پیش)

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