I created a button that counts clicks and created a timer for 5 seconds. After the 5 seconds, I want to find the clicks per second (cps) by taking counter and dividing it by 5. However, the problem is that after I reset counter to 0, the code for finding cps still runs in the onFinish method and makes the cps also to 0.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mtextViewCountDown = (TextView) findViewById(R.id.text_view_countdown);
btnClick = (Button) findViewById(R.id.button2);
displayCPS = (TextView) findViewById(R.id.cps);
btnClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startTimer();
counter++;
btnClick.setText(Integer.toString(counter));
}
});
}
public void startTimer(){
countDownTimer = new CountDownTimer(timeLeft,1000){
public void onTick(long l){
timeLeft = l;
updateTimer();
}
public void onFinish() {
cps = counter / 5;
System.out.println(cps);
displayCPS.setText("CPS: " + Double.toString(cps));
}
}.start();
}
public void updateTimer(){
int minutes = 0;
int seconds = (int) timeLeft / 1000;
String timeLeftFormatted = String.format(Locale.getDefault(),"%02d:%02d", minutes, seconds);
mtextViewCountDown.setText(timeLeftFormatted);
}
public void resetTimer(){
counter = 0;
btnClick.setText(Integer.toString(0));
timeLeft = 5000;
}
I tried to debug it and print out the cps in console.
I/System.out: 5.0
I/System.out: 0.0
I/chatty: uid=10088(com.example.cpspractice) identical 14 lines
I/System.out: 0.0
I/System.out: 0.0
I/chatty: uid=10088(com.example.cpspractice) identical 10 lines
I/System.out: 0.0
It seems to be like onFinish runs multiple times. Do you guys have any idea on how to make it only run once?
Please login or Register to submit your answer