0

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

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

1 回答 1

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

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

于 2012-04-17T07:27:28.267 回答