سؤال

مرحبًا في شاشتي ، يوجد حقل تحرير وحقول زر مخصصة كـ "موافق" و "إلغاء" أسفل Buttonfield ، هناك بعض حقول الملصقات القابلة للتركيز

عندما أكتب اسمًا في حقل التحرير واضغط على إدخال ثم يأتي التركيز إلى زر "موافق" ولكن كيفية ضبط زر "إلغاء".

علاوة على ذلك ، أثناء تمرير التركيز لا يمضي قدما تلقائيًا ؟؟؟

ما يجب فعله قد يكون مرتبكًا وأحداث اللمس ومعالجتها !!!

رجاء، المساعده!!!!!!!!!!!!

شفرة:

        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;
             }
        }
هل كانت مفيدة؟

المحلول 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;
             }
        }

نصائح أخرى

لقد صنعت تمامًا مثل Mark المقترح ، منفصلة عن FieldChangelisteners لكل زر:

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

الآن يبدو أنه على ما يرام:
alt text http://img40.imageshack.us/img40/6472/textentered.jpg alt text http://img59.imageshack.us/img59/7574/okpression.jpg alt text http://img641.imageshack.us/img641/9246/cancelpressed01.jpg

تحديث

Swati يمكنني النقر فوق هذه الأزرار مع Storm Simulator باستخدام نقرة الماوس. لا يمكنني العثور على أي تفسير آخر غير ملف COD في Simulator هو من الإصدار القديم. يمكنك التحقق من ذلك بسرعة عن طريق تغيير أي نص تسمية في التعليمات البرمجية ثم النشر والتحقق مما إذا كان سيتم تطبيق هذا التغيير في التطبيق على الجهاز. في حالة عدم وجود ، هذا هو الإصدار القديم ويجب عليك تنظيف المحاكاة ونشر التطبيق مرة أخرى.
ارجوا ان يساعدك هذا!
أنظر أيضا BlackBerry - التغييرات لا تنعكس في تطبيقي

يمكنك التحكم في ترتيب التركيز من خلال تجاوز طريقة "التنقل في الشاشة" على الشاشة أو المدير الذي يحتوي على الحقول القابلة للتركيز ، مثل أزرار OKE والإلغاء. فقط قم بتقييم الوسائط التي تم تمريرها إلى هذه الطريقة ، وقم بتعيين التركيز على الحقل المطلوب باستخدام Field.setFocus () ، وإرجاع True.

أما بالنسبة للتركيز على عدم المضي قدمًا في التمرير - فهذه هي الطريقة التي يعمل بها واجهة المستخدم شاشة اللمس. يتحرك التركيز فقط عند لمس حقل قابل للتركيز - لذلك إذا لم تلمس أي حقول قابلة للتركيز عندما "تنقر" على الشاشة للتمرير ، فلن يتغير التركيز.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top