Frage

hey in meinem Bildschirm gibt es ein ein Eingabefeld und 2 benutzerdefinierte Tastenfelder als „OK“ und „Abbrechen“ Unten Button gibt es einige mehr fokussierbaren Etikettenfelder

, wenn ich einen Namen im Eingabefeld ein und drücken Sie schreiben und geben Sie dann Fokus kommt auf „OK“ -Taste, sondern wie man den Schwerpunkt auf „Abbrechen“.

Darüber hinaus, während der Fokus Scrollen nicht automatisch vorankommen ???

, was tun kann ich mit Touch-Ereignissen und deren Handhabung verwirrt bin !!!

Mit freundlicher Hilfe !!!!!!!!!!!!

Code:

        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;
             }
        }
War es hilfreich?

Lösung 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;
             }
        }

Andere Tipps

Ich habe gerade wie Mark vorgeschlagen, getrennten FieldChangeListeners für jede Taste:

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

Nun scheint es in Ordnung zu sein:
  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

UPDATE

Swati Ich kann diese Tasten mit Sturm-Simulator klicken, um einen Mausklick verwenden. Ich kann keine andere Erklärung finden, als COD-Datei in Simulator aus alter Version. Sie können es schnell überprüfen, durch den Label-Text in Code zu ändern und dann bereitstellen und überprüfen, ob diese Änderung in der App auf dem Gerät angewandt werden soll. Im Fall, wenn nicht, dann ist dies die alte Version und Sie sollten einmal Simulator und deploy App wieder sauber.
Hoffe, das wird Ihnen helfen!
Siehe auch Blackberry - Änderungen werden nicht in meiner app reflektiert zu werden

Sie können den Fokus steuern, um durch Überschreiben der „navigationMovement“ -Methode auf dem Bildschirm oder Manager die fokussierbare Felder, wie das in Ordnung enthält und Abbrechen-Schaltflächen. bewerten Sie die an diese Methode übergebenen Argumente in, den Schwerpunkt auf das gewünschte Feld Field.setFocus () verwendet wird, und true zurück.

Was den Fokus nicht voran bewegt sich mit Scrollen -, dass der Touchscreen UI funktioniert genau so, wie ist. Der Fokus bewegt sich nur, wenn Sie einen fokussierbaren Bereich berühren -. Also, wenn Sie keine fokussierbaren Felder zu berühren, wenn Sie „Streifen“ auf dem Bildschirm zu blättern, werden nicht im Fokus ändern

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top