在黑莓手机中触摸事件

时间:2012-04-16 11:05:56

标签: blackberry ontouchevent

我创建了一个VerticalFieldmanager optFieldManager 我在其中添加了一些CustomButtons 然后我想使用触摸事件方法调用按钮的功能 我尝试使用TouchEvent()方法 为此,我获取optFieldManager的索引,它将索引值设为0 这证实了该领域的存在 但后来我又要求管理器内的字段返回-1值,这意味着没有字段添加到Manager ...这不是真的 我调试了代码,发现点击的位置被正确返回

int index1=optionVertFldMgr.getFieldAtLocation(message.getX(1), message.getY(1)); 

但是index1值为-1,这是错误的

问题是什么

我添加了以下代码片段

protected boolean touchEvent(TouchEvent message) {

            switch(message.getEvent())
            {

            case TouchEvent.CLICK:
            {
                int index=getFieldAtLocation(message.getX(1), message.getY(1));
                //int index1=optionVertFldMgr.getFieldAtLocation(message.getX(1), message.getY(1));
                if(index!=-1)
                {
                    Field field=getField(index);
                    if(field.equals(optionVertFldMgr))  
                    {

                        int index1=optionVertFldMgr.getFieldAtLocation(message.getX(1), message.getY(1));
                        System.out.println("HELOOOOOOO"+((VerticalFieldManager) field).getFieldAtLocation(message.getX(1), message.getY(1)));
                        //int index1=optionVertFldMgr.getFieldWithFocusIndex();
                        if(index1>-1)
                        {
                            Field fld=optionVertFldMgr.getField(index1);
                            if(fld.equals(m_agendaBtn))
                            {
                                fld.setFocus();
                                return true;
                            }else if(fld.equals(m_eventFeedBackBtn))
                            {
                                fld.setFocus();
                                UiApplication.getUiApplication().pushScreen(new EventFeedbackScreen());
                                return true;
                            }
                        }
                    }
                }
            }
            }
            return false;
            }

1 个答案:

答案 0 :(得分:1)

您始终可以在每个按钮上覆盖Field.navigationClick,甚至可以在屏幕上覆盖一次,并从那里管理来自每个字段的所有事件:

    public boolean navigationClick(int status, int time){
        Field f = getLeafFieldWithFocus();
        if(f == button1){
            //do something 1
            return true;    
        } else if(field == button2){
            //do something 2
            return true;
        }
        //more fields
        return false;   
    }

此方法适用于触摸屏和触控板。