Pregunta

Hola, en mi pantalla, hay un campo de edición y 2 campos de botón personalizados como "OK" y "Cancelar" a continuación.

cuando escribo un nombre en el campo de edición y presiono Intro, el foco llega al botón "Aceptar", pero cómo configurar el foco en el botón "CANCELAR".

Además, al desplazarse, el enfoque no avanza automáticamente.

¡¡¡Qué hacer puede que esté confundido con los eventos táctiles y su manejo!!!

Ayuda por favor!!!!!!!!!!!!

Código:

        txt_Name = new EditField(TextField.NO_NEWLINE)
            {
                public void paint(net.rim.device.api.ui.Graphics g)
                {
                    g.setColor(Color.MAROON);
                    super.paint(g);
                }
           };

            txt_Name.setFont(font);

     v1 =  new VerticalFieldManager();
     v1.add(txt_Name );


    ButtonField btn1 = new ButtonField("OK",ButtonField.CONSUME_CLICK);
    ButtonField btn2 = new ButtonField("CANCEL",ButtonField.CONSUME_CLICK);

     v2 =  new VerticalFieldManager();
     v2.add(btn1);
     v2.add(btn2);

    LabelField l1 = new  LabelField("Hello Moon ",Field.Focussable);
    LabelField l2 = new  LabelField("Hello Citizen",Field.Focussable);
    LabelField l3 = new  LabelField("Hello People",Field.Focussable);
    LabelField l4 = new  LabelField("Hello world",Field.Focussable);

     v3 =  new VerticalFieldManager();
     v3.add(l1);
     v3.add(l2);
     v3.add(l3);
     v3.add(l4);

    add(v1);
    add(v2);
    add(v3);
}


protected boolean navigationClick(int status, int time) 
    {
     if(OK.isFocus())
             {
                //execute some code
                return true;
             }
if(CANCEL.isFocus())
             {
                //execute some code
                return true;
             }
        }
¿Fue útil?

Solución 2

    txt_Name = new EditField(TextField.NO_NEWLINE)
            {
                public void paint(net.rim.device.api.ui.Graphics g)
                {
                    g.setColor(Color.MAROON);
                    super.paint(g);
                }
           };

            txt_Name.setFont(font);

     v1 =  new VerticalFieldManager();
     v1.add(txt_Name );


    ButtonField btn1 = new ButtonField("OK",ButtonField.CONSUME_CLICK);
    ButtonField btn2 = new ButtonField("CANCEL",ButtonField.CONSUME_CLICK);

     h2 =  new HorizontalalFieldManager();
     h2.add(btn1);
     h2.add(btn2);

    LabelField l1 = new  LabelField("Hello Moon ",Field.Focussable);
    LabelField l2 = new  LabelField("Hello Citizen",Field.Focussable);
    LabelField l3 = new  LabelField("Hello People",Field.Focussable);
    LabelField l4 = new  LabelField("Hello world",Field.Focussable);

     v3 =  new VerticalFieldManager();
     v3.add(l1);
     v3.add(l2);
     v3.add(l3);
     v3.add(l4);

    add(v1);
    add(h2);
    add(v3);
}


protected boolean navigationClick(int status, int time) 
    {
int index = h2.getFieldwithFocusIndex();
     if(h2==0)
             {
                //execute some code for OK
                return true;
             }
if(h2==1)
             {
                //execute some code for cancel
                return true;
             }
        }

Otros consejos

Me hizo al igual que la marca sugiere, FieldChangeListeners separadas para cada botón:

class Scr extends MainScreen {
    EditField txt_Name;
    ButtonField btnOK;
    ButtonField btnCancel;
    VerticalFieldManager v1;
    VerticalFieldManager v2;
    VerticalFieldManager v3;
    Font font = Font.getDefault().derive(Font.BOLD, 20);

    public Scr() {
        txt_Name = new EditField(TextField.NO_NEWLINE) {
            public void paint(net.rim.device.api.ui.Graphics g) {
                g.setColor(Color.MAROON);
                super.paint(g);
            }
        };

        txt_Name.setFont(font);

        v1 = new VerticalFieldManager();
        v1.add(txt_Name);

        btnOK = new ButtonField("OK", ButtonField.CONSUME_CLICK);
        btnOK.setChangeListener(
            new FieldChangeListener(){
                public void fieldChanged(Field field, int context) {
            Dialog.inform("OK pressed");
        }});
        btnCancel = new ButtonField("Cancel", ButtonField.CONSUME_CLICK);
        btnCancel.setChangeListener(
            new FieldChangeListener(){
                public void fieldChanged(Field field, int context) {
            Dialog.inform("Cancel pressed");
        }});
        v2 = new VerticalFieldManager();
        v2.add(btnOK);
        v2.add(btnCancel);

        LabelField l1 = new LabelField("Hello Moon", Field.FOCUSABLE);
        LabelField l2 = new LabelField("Hello Citizen", Field.FOCUSABLE);
        LabelField l3 = new LabelField("Hello People", Field.FOCUSABLE);
        LabelField l4 = new LabelField("Hello world", Field.FOCUSABLE);

        v3 = new VerticalFieldManager();
        v3.add(l1);
        v3.add(l2);
        v3.add(l3);
        v3.add(l4);

        add(v1);
        add(v2);
        add(v3);
    }
}

Ahora parece estar bien:
  texto alt http://img40.imageshack.us/img40/6472/textentered.jpg texto alternativo http://img59.imageshack.us/img59/7574/okpressed .jpg alt text http://img641.imageshack.us/img641/ 9246 / cancelpressed01.jpg

Actualizar

Swati que puede hacer clic en los botones con simulador de tormenta con un clic del ratón. No puedo encontrar ninguna otra explicación que el bacalao archivo en simulador es de la versión antigua. Puede comprobar rápidamente al cambiar cualquier texto de la etiqueta de código y luego desplegar y comprobar si este cambio se aplicará en aplicación en el dispositivo. En caso de no ser así, esta es la versión antigua y se debe limpiar simulador y aplicación desplegar una vez más.
Espero que esto le ayudará!
Ver también BlackBerry - Los cambios no están recibiendo reflejado en mi aplicación

Puede controlar el orden de enfoque anulando el método "navigationMovement" en la pantalla o el administrador que contiene los campos enfocables, como los botones Aceptar y Cancelar.Simplemente evalúe los argumentos pasados ​​a ese método, establezca el foco en el campo deseado usando Field.setFocus() y devuelva verdadero.

En cuanto a que el enfoque no avanza con el desplazamiento, así es como funciona la interfaz de usuario de la pantalla táctil.El enfoque solo se mueve cuando tocas un campo enfocable, por lo que si no tocas ningún campo enfocable cuando "deslizas" la pantalla para desplazarte, el enfoque no cambiará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top