BlackBerry touchEvent fora do campo dispara fieldChanged
Estou com um problema em que, se pressionar / tocar fora de um campo, ofieldChanged()
evento é acionado para o campo em foco.
O layout para o meuMainScreen
é bem direto, algo assim:
public class myMainScreen extends MainScreen implements FieldChangeListener{
public myMainScreen(){
CustomFM1 fm1 = new CustomFM1();
CustomFM2 fm2 = new CustomFM2();
add(fm1);
add(fm2);
}
}
Se eu pressionar um botão / campo dentro deFieldManager
Funciona bem. O problema é quando pressiono o espaço vazio. Então, se eu pressionar dentro do espaço vazio emfm2
eField
dentrofm1
tinha foco, seu evento alterado no campo seria acionad
No momento, meu remédio é pegar otouchEvent
e passe para o @ apropriaFieldManager
. OtouchEvent
para o meuCustomFM
lidaria com a obtenção do campo e a chamada fieldChanged, se um campo fosse realmente pressionado
Então emmyMainScreen
touchEvent parece com:
protected boolean touchEvent(TouchEvent message){
int index = this.getFieldAtLocation(message.getX(1), message.getY(1));
switch(index){
case 0:
fm1.touchEvent(message);
break;
case 1:
fm2.touchEvent(message);
break;
}
return true;
}
E meutouchEvent
para o meu CustomFM2 é.OFFSET
é a posição superior y de fm2 em relação à tel
protected boolean touchEvent(TouchEvent message){
switch(message.getEvent()){
...
case TouchEvent.UP:
int index = this.getFieldAtLocation(message.getGlobalX(1), message.getGlobalY(1) - OFFSET);
if(index != -1){
Field field = getField(index);
field.getChangeListener().fieldChanged(field, 0);
}
break;
}
return true;
}
O que eu quero saber é que, se houver uma solução mais fácil para isso? Estou esquecendo de algo