我有一个带标签的主屏幕。每个选项卡都有自己重写的navigationClick方法,如下所示
protected boolean navigationClick(int status, int time) {
fieldChangeNotify(1);
return true;
}
和其他方法
public boolean isFocusable() {
return true;
}
protected void drawFocus(Graphics graphics,
boolean on) {
// Don't draw the default focus
}
protected void onFocus(int direction) {
super.onFocus(direction);
invalidate();
}
protected void onUnfocus() {
super.onUnfocus();
invalidate();
}
然而,在我的主屏幕中,水平场管理员中有3个这样的标签。被覆盖的fieldChanged就像这样实现
public void fieldChanged(Field field, int context) {
if (_tabArea != null) {
if (field == _tab1) {
delete(_tabArea);
_tabArea = displayTab1();
add(_tabArea);
} else if (field == _tab2) {
delete(_tabArea);
_tabArea = displayTab2();
add(_tabArea);
} else if (field == _tab3) {
delete(_tabArea);
_tabArea = displayTab3();
add(_tabArea);
}
}
}
切换标签。我在下面有一个navigationClick来处理列表字段上的点击,但是自从我覆盖了navigationClick后,该选项卡切换不再有效。任何人都知道为什么?
protected boolean navigationClick(int status, int time) {
Field field = _listfield;
if(field instanceof ListField)
{
int selected = _listfield.getSelectedIndex();
switch (selected) {
case 0:
delete(_tabArea);
All all = new All();
_tabArea = all.getVFM();
add(_tabArea);
break;
case 1:
break;
}
return true;
}
return super.navigationClick(status, time);
}
答案 0 :(得分:1)
你的覆盖是否在所有情况下调用super.navigationClick()?
根据您的navigationClick代码,看起来不会调用super.navigationClick(),因为if(field instanceof ListField)
会阻止执行到达超级调用。