-1

How can I increase my counter i here:

private void startTimer() {

    int i = 0;
    final Timer timer = new Timer();
    final TimerTask task = new TimerTask() {
        @Override
        public void run() {


            if(preferences.getBoolean(IS_RUNNING_KEY, false))
            {
                final int k = i++; //i must declared final error
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        timeCounter.setText(""+k);
                        Log.d("DTAG","K: "+k);
                    }
                });
            } else {
                timer.cancel();
                timer.purge();

            }
        }
    };

    timer.schedule(task, 1000);

}
Dim
  • 4,527
  • 15
  • 80
  • 139

1 Answers1

1

You have to move i out of the scope of the function. Then it does not have to be declared final and you can change it. Change your code to this

private int i = 0;
private void startTimer() {

final Timer timer = new Timer();
final TimerTask task = new TimerTask() {
    @Override
    public void run() {


        if(preferences.getBoolean(IS_RUNNING_KEY, false))
        {
            final int k = i++;
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    timeCounter.setText(""+k);
                    Log.d("DTAG","K: "+k);
                }
            });
        } else {
            timer.cancel();
            timer.purge();

        }
    }
};

timer.schedule(task, 1000);

}
0xDEADC0DE
  • 2,453
  • 1
  • 17
  • 22