【问题标题】:Blackberry storm 9530 tracing touch events while scrollingBlackberry Storm 9530 在滚动时跟踪触摸事件
【发布时间】:2010-03-12 18:00:40
【问题描述】:

嘿,我的屏幕上有一个编辑字段和 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);

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

【问题讨论】:

  • Swati 查看我的回答的更新

标签: user-interface blackberry scroll focus rim-4.7


【解决方案1】:

我就像 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.jpgalt text http://img59.imageshack.us/img59/7574/okpressed.jpgalt text http://img641.imageshack.us/img641/9246/cancelpressed01.jpg

更新

Swati 我可以使用 Storm 模拟器通过鼠标单击来单击这些按钮。 除了模拟器中的 cod 文件来自旧版本之外,我找不到任何其他解释。您可以通过更改代码中的任何标签文本来快速检查它,然后部署并检查此更改是否将应用于设备上的应用程序。如果不是,这是旧版本,您应该清理模拟器并再次部署应用程序。
希望这会对您有所帮助!
另见BlackBerry - Changes are not getting reflected in my app

【讨论】:

  • max 我以同样的方式工作,但当我按下它时,焦点仍然没有出现在确定取消按钮上,它如此简单仍然无法执行天哪,我在做什么错?????? ???非常感谢你的努力......让我找出我在做什么愚蠢的错误
  • 当我按下键盘上的箭头键时,焦点出现在按钮上,现在该怎么办..
  • 我删除了我的代码,并与你的代码一起工作!!!!我认为在我的情况下,问题在于没有出现焦点的自定义按钮字段.....
  • 如果该自定义按钮需要帮助,请使用代码发布新问题,以便我们尝试;)
  • Swati,请描述,出现了什么问题,如何滚动屏幕(在模拟器的情况下使用鼠标或 PC 键盘),滚动可用的原因(更多控件、大量输入的文本、方向改变等)
【解决方案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;
             }
        }

【讨论】:

    【解决方案3】:

    您可以通过覆盖屏幕或包含可聚焦字段(例如确定和取消按钮)的管理器上的“navigationMovement”方法来控制焦点顺序。只需评估传入该方法的参数,使用 Field.setFocus() 将焦点设置在所需字段上,然后返回 true。

    至于焦点不会随着滚动而向前移动 - 这正是触摸屏 UI 的工作方式。焦点仅在您触摸可聚焦字段时移动 - 因此,如果您在“轻弹”屏幕滚动时未触摸任何可聚焦字段,则焦点不会改变。

    【讨论】:

    • 好吧,马克我面临的问题就像 :: 当我在编辑字段中输入名称时说“你好”,之后我触摸确定按钮但因为焦点仍在编辑字段上所以当我触摸 ok 按钮时,其相应的代码不会执行.. 我尝试使用 TouchEvent、navigationClick、navigationmovement 但 cldnt 找到解决方案,我的按钮没有调用,该怎么办???
    • 尝试在每个按钮上设置一个 FieldChangeListener 而不是使用屏幕的 navigationClick。
    • Marc 我尝试了你所说的 buttonField 但实际上仍然不起作用 nw 我使用自定义字段代替按钮,这是一个可聚焦的字段 havig 图像,但它也不起作用..
    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多