Al fin después de mucho trabajar ya dimos con la respuesta de este apuro que agunos lectores de nuestro sitio web han presentado. Si deseas aportar algo más no dudes en compartir tu comentario.
Solución:
new CountDownTimer(30000, 1000)
public void onTick(long millisUntilFinished)
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
//here you can have your logic to set text to edittext
public void onFinish()
mTextField.setText("done!");
.start();
Consulte este enlace.
si usa el siguiente código (como se menciona en la respuesta aceptada),
new CountDownTimer(30000, 1000)
public void onTick(long millisUntilFinished)
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
//here you can have your logic to set text to edittext
public void onFinish()
mTextField.setText("done!");
.start();
Dará como resultado una pérdida de memoria de la instancia de la actividad en la que usa este código, si no limpia cuidadosamente las referencias.
usa el siguiente código
//Declare timer
CountDownTimer cTimer = null;
//start timer function
void startTimer()
cTimer = new CountDownTimer(30000, 1000)
public void onTick(long millisUntilFinished)
public void onFinish()
;
cTimer.start();
//cancel timer
void cancelTimer()
if(cTimer!=null)
cTimer.cancel();
Necesitas llamar cTtimer.cancel () siempre que el onDestroy () / onDestroyView () en la Actividad / Fragmento propietario se llama.
MainActivity.java
package com.zeustechnocrats.countdown;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity
private String EVENT_DATE_TIME = "2020-12-31 10:30:00";
private String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
private LinearLayout linear_layout_1, linear_layout_2;
private TextView tv_days, tv_hour, tv_minute, tv_second;
private Handler handler = new Handler();
private Runnable runnable;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.count_down);
initUI();
countDownStart();
private void initUI()
linear_layout_1 = findViewById(R.id.linear_layout_1);
linear_layout_2 = findViewById(R.id.linear_layout_2);
tv_days = findViewById(R.id.tv_days);
tv_hour = findViewById(R.id.tv_hour);
tv_minute = findViewById(R.id.tv_minute);
tv_second = findViewById(R.id.tv_second);
private void countDownStart()
runnable = new Runnable()
@Override
public void run()
try
handler.postDelayed(this, 1000);
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
Date event_date = dateFormat.parse(EVENT_DATE_TIME);
Date current_date = new Date();
if (!current_date.after(event_date))
long diff = event_date.getTime() - current_date.getTime();
long Days = diff / (24 * 60 * 60 * 1000);
long Hours = diff / (60 * 60 * 1000) % 24;
long Minutes = diff / (60 * 1000) % 60;
long Seconds = diff / 1000 % 60;
//
tv_days.setText(String.format("%02d", Days));
tv_hour.setText(String.format("%02d", Hours));
tv_minute.setText(String.format("%02d", Minutes));
tv_second.setText(String.format("%02d", Seconds));
else
linear_layout_1.setVisibility(View.VISIBLE);
linear_layout_2.setVisibility(View.GONE);
handler.removeCallbacks(runnable);
catch (Exception e)
e.printStackTrace();
;
handler.postDelayed(runnable, 0);
protected void onStop()
super.onStop();
handler.removeCallbacks(runnable);
activity_main.xml
Aquí puedes ver las comentarios y valoraciones de los usuarios
Recuerda algo, que te brindamos la opción de esclarecer tu experiencia si te fue de ayuda.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)