J'ai un problème lorsque j'appuie sur/touchez en dehors d'un champ pour déclencher l'événement fieldChanged()
pour le champ qui a le focus.BlackBerry touchEvent outside Champ déclencheurs fieldChanged
La mise en page pour mon MainScreen
est assez simple, quelque chose comme ceci:
public class myMainScreen extends MainScreen implements FieldChangeListener{
public myMainScreen(){
CustomFM1 fm1 = new CustomFM1();
CustomFM2 fm2 = new CustomFM2();
add(fm1);
add(fm2);
}
}
Si je presse un bouton/champ à l'intérieur de l'une ou l'autre FieldManager
il fonctionne très bien. Le problème est quand j'appuie sur l'espace vide. Donc, si je devais appuyer à l'intérieur de l'espace vide dans fm2
et un Field
à l'intérieur fm1
avait focus, son événement fieldchanged serait déclenché.
Pour l'instant, mon remède est d'attraper le touchEvent
et de le passer au FieldManager
approprié. Le touchEvent
pour mon CustomFM
serait alors gérer obtenir le terrain et appeler fieldChanged, si un champ a été effectivement pressé
Ainsi, dans myMainScreen
TouchEvent ressemble:
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;
}
Et mon touchEvent
pour mon CustomFM2 est. OFFSET
est la première position de fm2, par rapport à l'écran.
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;
}
Ce que je me demande est que s'il y a une solution plus facile à cela? Est-ce que je manque quelque chose?
Impossible de le reproduire avec le simulateur 5.0 9550: 2 gestionnaires de champs horizontaux, avec un champ de bouton click-consum dans chacun. Fonctionne bien. cliquer sur l'espace vide du gestionnaire ne déclenche pas l'événement FieldChangeListener. Quelle version/appareil vous utilisez? –
@Max torche OS6. Je pense que je l'ai compris maintenant. la réponse à ce message a aidé [http://stackoverflow.com/questions/5948222/blackberry-click-outside-field]. Je vais poster une réponse dans un peu. Ce que je faisais au-dessus était un peu faux. –
J'ai eu le même problème. Veuillez cocher la case [BlackBerry click outside Field] (http://stackoverflow.com/questions/5948222/blackberry-click-outside-field). – aeracode