【问题标题】:listfield in tabs blackberry黑莓标签中的列表字段
【发布时间】:2011-12-06 03:03:41
【问题描述】:

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

【问题讨论】:

    标签: blackberry java-me tabs listfield


    【解决方案1】:

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

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

    【讨论】:

    • 我改变了 Field field = _listfield; to Field field = this.getFieldWithFocus(); ...现在选项卡工作,但选择列表项不起作用
    • 我认为不要使用 this.getFieldWithFocus()。执行 if (field.isFocus()) { // 你的代码 // } 之类的操作,因为它可能会在你关注其他字段时触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多