Problema com função traverse - CustomItem

Beleza pessoal?

Preciso de uma ajuda pro meu TCC.
Estou construindo um CustomItem. Simplificando, ele possui uma barra de progresso e uma imagem.
Enquanto a barra não enche, o usuário não pode fazer nenhuma ação.
Quando a barra de progresso chega o máximo, ela é reiniciada e o usuário pode mover a imagem usando as teclas do celular, enquanto a barra não enche.
Assim, o usuário vai alternando ação/espera através da barra de progresso.
O problema está na função traverse. Se eu coloco uma condição para testar a flag que representa o estado ação/espera, não funciona.
Vou colocar aqui trechos do código, para tentar explicar melhor.

Aqui está o construtor do meu item, com o TimerTask responsavel pelo incremento da barra

public Progress(String title)
    {
       boolean agir = false;
       int max = 0;
       int current = 0; 
       ....
        
        TimerTask task = new TimerTask() {
        public void run() {
            increment();
            repaint();
        }
    };
    Timer timer = new Timer();
    timer.schedule(task,0,100);
    }
...

A função increment, como o nome diz, incrementa a barra e, se chegar ao maximo, muda a flag agir

public void increment()
    {
        current++;
         if(current > max){
            currrent = 0;
            agir = !agir;
        }
        repaint();
    }

Através da flag agir, eu consigo saber se o usuário pode fazer alguma ação ou não.
Na função traverse, eu teria que testar esta flag e pegar as ações do teclado.

protected boolean traverse( int dir, int viewportWidth, int viewportHeight, int[] visRect_inOut ){
        if(agir) {        
             switch(dir) { 
                 case    Canvas.UP:     return   testa("cima");
                 case    Canvas.DOWN:   return    testa("baixo");    
                 case    Canvas.LEFT:   return    testa("esquerda");  
                 case    Canvas.RIGHT:  return    testa("direita"); 
        
             }
        }
         return false;
}

private boolean testa(String tecla){
       System.out.println(tecla);
       return true;
}     

Mas não está funcionando. Aperto as teclas direcionais, mas nada acontece.
O curioso é que, se eu tirar o teste da flag, funciona corretamente.

Alguma sugestão?

Agradeço a todos!

com os dados que você colocou a variável ‘max’ será sempre 0
e current vai aumentar, fazendo o boolean ‘agir’ ficar igual a false. talvez você mude isso durante o código…
muda??