olá pessoal,
espero que possam me ajudar, estou fazendo uma espécie de DateField que a pessoa pode mudar os campos pelo trackball de forma horizontal ou vertical: h: aumenta ou diminui o valor de campo;
v:muda o campo a ser alterado; para que ele entre no item e edite os valores ou sair do item ele deve teclar no ok.
isso tudo está fucionando :D, todavia da primeira vez que ele clica ok e a pessoa move o trackball para qualquer um dos lados o metódo chamado é o traverseout() e não o traverse() fazendo com que o foco saia do item… mas uma vez que a pessoa volta pro item ela não sai sem ser apertando ok e consegue editar os campos tranquilamente. será que alguem pode me ajudar??
protected boolean traverse(int dir, int viewportWidth, int viewportHeight,
int[] visRectInout) {
switch (dir) {
case Canvas.UP:
if (entra) {
movePraCima();
}
return entra;
case Canvas.LEFT:
if (entra) {
moveProLado();
}
return entra;
case Canvas.DOWN:
if (entra) {
movePraBaixo();
}
return entra;
case Canvas.RIGHT:
if (entra) {
moveProLado();
}
return entra;
case NONE:
return true;
}
return false;
}
protected void keyPressed(int keyCode) {
if (keyCode == -5) {
if (entra) {
entra = false;
selec = 0;
} else {
entra = true;
selec = selHr;
}
repaint();
}
}