I'm a begginer in android programming and trying to improve my knowledge. I want to make an app that is a regressive chronometer, like this: I insert the seconds I want in a text view named "seconds", then press a button and the app counts down the seconds (for example: 50, 49, 48, ..., 0) in another text view called, let's say... "timeRemaining".
How this can be done? I have read some other questions here, but to be honest, I could not understand them...
Well, I managed to do something here, The countdown is working, but only if I set the time directly on the code. I cannot find a way to implement the conversion of the number (text) entered in the text view to LONG and then use this value as the time to countdown.
There is no error when debugging, but when the simulator is about to run the app and opens the activity, it stop with the message "Unfortunately, app has stopped"
Here's the code, if anyone can help me finding what I'm missing, I'll be glad!
Thank you all!
public class cronometro extends Activity implements View.OnClickListener {
Long tempo3 = Long.parseLong(findViewById(R.id.tempo).toString());
private CountDownTimer countDownTimer;
private boolean timerStarted = false;
private Button buttonStart;
public TextView textView;
private final long startTime = tempo3 * 1000;
private final long interval = 1 * 1000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cronometro);
buttonStart = (Button) this.findViewById(R.id.button);
buttonStart.setOnClickListener(this);
textView = (TextView) this.findViewById(R.id.textView);
countDownTimer = new CountDownTimerActivity(startTime, interval);
textView.setText(textView.getText() + String.valueOf(startTime/1000));
}
@Override
public void onClick(View v) {
if (!timerStarted) {
countDownTimer.start();
timerStarted = true;
buttonStart.setText("PARAR");
} else {
countDownTimer.cancel();
timerStarted = false;
buttonStart.setText("REINICIAR");
}
}
public class CountDownTimerActivity extends CountDownTimer {
public CountDownTimerActivity(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
textView.setText("tempo esgotado!");
}
@Override
public void onTick(long millisUntilFinished) {
textView.setText("" + millisUntilFinished/1000);
}
}
}