标签黑莓中的列表字段

时间:2011-12-06 03:03:41

标签: blackberry java-me tabs listfield

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

1 个答案:

答案 0 :(得分:1)

你的覆盖是否在所有情况下调用super.navigationClick()?

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