【问题标题】:BlackBerry - Consuming Click Event from ButtonFieldBlackBerry - 从 ButtonField 使用 Click 事件
【发布时间】:2011-02-19 09:24:40
【问题描述】:

我在黑莓中开发了 UI 应用程序。
在按钮单击事件上,我想显示两个数字相加的结果。
如何在黑莓的java app中处理这个事件?

【问题讨论】:

    标签: user-interface events blackberry button


    【解决方案1】:

    ButtonField 中使用点击事件的最佳选择是使用FieldChangeListener。只需实现 FieldChangeListener 接口并应用 ButtonField.setChangeListener():

    class MenuScreen extends MainScreen implements FieldChangeListener {
        EditField mNumberAEditField;
        EditField mNumberBEditField;
        ButtonField mAddButtonField;
        public MenuScreen() {
            super(DEFAULT_CLOSE);
            mNumberAEditField = new EditField("A:", "2", 10, 
                    EditField.FILTER_INTEGER);
            add(mNumberAEditField);
            mNumberBEditField = new EditField("B:", "2", 10, 
                    EditField.FILTER_INTEGER);
            add(mNumberBEditField);
            mAddButtonField = new ButtonField("A + B", 
                    ButtonField.CONSUME_CLICK);
            add(mAddButtonField);
            mAddButtonField.setChangeListener(this);
        }
    
        public void fieldChanged(Field field, int context) {
            if(field == mAddButtonField)
            {
                showAddResult();
            }
        }
    
        private void showAddResult() {
            String message = "";
            String aStr = mNumberAEditField.getText();
            String bStr = mNumberBEditField.getText();
            if(aStr == "")
                message = "Enter A value!";
            else if(bStr == "")
                message = "Enter B value!";
            else    
            {
                int res = Integer.parseInt(aStr)+Integer.parseInt(bStr);
                message = aStr+" + "+bStr+" = "+String.valueOf(res);        
            }
            Dialog.inform(message);
        }
    }
    

    FieldChangeListener 的其他选项是内联声明和实现它。比您不必检查来自哪个现场事件:

            mAddButtonField.setChangeListener(new FieldChangeListener() {
                public void fieldChanged(Field field, int context) {
                    showAddResult();
                }
            });
    

    【讨论】:

      【解决方案2】:

      或者..

      add(new ButtonField("Click Me")) {  
        protected boolean navigationClick(int status, int time) {  
          showAddResult();  
          return true;  
        }  
      });  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-14
        • 1970-01-01
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        • 2012-09-09
        相关资源
        最近更新 更多