Domanda

hey nel mio schermo c'è un un campo di modifica e 2 campi pulsante personalizzato come "OK" e "Annulla" Qui di seguito ButtonField ci sono alcuni campi di etichette più focalizzabile

quando scrivo un nome nel campo di modifica e premere Invio quindi concentrarsi tratta di pulsante "OK", ma come si concentrano su pulsante "Annulla".

Inoltre durante lo scorrimento la messa a fuoco non si muove automaticamente avanti ???

cosa fare può essere I m confuso con gli eventi di tocco e la loro manipolazione !!!

Si prega di aiuto !!!!!!!!!!!!

Codice:

        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;
             }
        }
È stato utile?

Soluzione 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;
             }
        }

Altri suggerimenti

ho fatto proprio come Mark ha suggerito, FieldChangeListeners separate per ogni pulsante:

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);
    }
}

Ora sembra essere OK:
  alt text http://img40.imageshack.us/img40/6472/textentered.jpg alt text http://img59.imageshack.us/img59/7574/okpressed .jpg alt text http://img641.imageshack.us/img641/ 9246 / cancelpressed01.jpg

Aggiorna

Swati posso cliccare quei bottoni con simulatore di tempesta con un clic del mouse. Non riesco a trovare altra spiegazione che Cod file in simulatore è dalla vecchia versione. È possibile controllare rapidamente modificando il testo dell'etichetta in codice e quindi distribuire e verificare se questo cambiamento sarà applicata in app sul dispositivo. Nel caso in cui in caso contrario, questa è la vecchia versione e si dovrebbe pulire simulatore e implementare app ancora una volta.
Spero che questo vi aiuterà!
Vedi anche BlackBerry - I cambiamenti non sono sempre riflette nella mia app

È possibile controllare l'ordine di messa a fuoco mediante l'override del metodo "navigationMovement" sullo schermo o manager che contiene i campi focusable, come il bene e pulsanti annullare. Basta valutare gli argomenti passati a tale metodo, si concentrano su campo desiderato utilizzando Field.setFocus (), e restituisce vero.

Per quanto riguarda la messa a fuoco non procedere con lo scorrimento - che è solo il modo in cui le opere di interfaccia utente touchscreen. La messa a fuoco si sposta solo quando si tocca un campo attivabile -. Quindi se non sta toccando tutti i campi focusable quando si "flick" lo schermo per scorrere, la messa a fuoco non cambierà

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top