我创建了一个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;
}
答案 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;
}
此方法适用于触摸屏和触控板。