No se puede establecer un Oyente común en el desarrollo de BlackBerry

Estoy tratando de establecer un oyente común para un botón personalizado y un campo de mapa de bits. Puedo acceder al oyente pero no puedo diferenciar entre dos campos.

private class MeaningsDetailsPageListner implements FieldChangeListener{
    public void fieldChanged(Field field, int arg1) {
        Dialog.alert("Hi");
        if(field == bField){
            Dialog.alert("Image Clicked");
        }else if(field == wordBtn){
            Dialog.alert("Button Clicked!!");
        }
    }
}

En el siguiente código, wordBtn es mi botón personalizado y otro es BitmapField. Recibo una alerta Hola, pero no puedo diferenciar más.

Cualquier ayuda sería apreciada.

preguntado el 12 de junio de 12 a las 12:06

¿Cuál es el nombre de clase de su botón personalizado? -

Usar instanceof El operador puede ser útil. Mira esto, pastebin.com/KKCyztG2. -

¿Intentaste escuchar el cambio de campo? -

Hola, Rupak, ese nombre de clase es CustomButtonField y extiende Field. -

Hola, Rupak está funcionando ahora. Agradecemos tu ayuda. -

1 Respuestas

Aunque veo lo que estás tratando de hacer, es mejor que agregues un FieldChangeListener a cada Campo individualmente como una clase anónima. De esta manera, no tiene que preocuparse por convertir su Campo en el tipo correcto cuando pruebe la igualdad dentro fieldChanged.

ButtonField b = new ButtonField("Hello!");
b.setChangeListener(new FieldChangeListener() {

    public void fieldChanged(Field field, int context) {
        Dialog.alert("Button clicked");
    }
});

Respondido el 12 de junio de 12 a las 14:06

Pero si los campos no se comparan, no podemos segregar el tipo de Campos. Y mi problema es que quiero hacer clic en otro campo cuando se hace clic en 1 campo y ambos están en el mismo administrador. - JACOB

Los campos no están diseñados para recordar cuándo se hizo clic en ellos, aunque almacenan si su estado ha cambiado en Field.isMuddy y Field.isDirty. Para hacer esto, probablemente debería implementar una bandera para indicar en qué campos se ha hecho clic. - Donturner

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.