2

我有一个带有标签的主屏幕。每个选项卡都有自己的被覆盖的 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();
}

但是,在我的主屏幕中,horizo​​ntalfieldmanager 中有 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);   
 }
4

1 回答 1

1

您是否在所有情况下都调用 super.navigationClick() ?

根据您的 navigationClick 代码,看起来 super.navigationClick() 不会被调用,因为会if(field instanceof ListField)阻止执行到达超级调用。

于 2011-12-06T07:06:41.827 回答