Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Blackberry 黑莓标签中的列表字段_Blackberry_Java Me_Tabs_Listfield - Fatal编程技术网

Blackberry 黑莓标签中的列表字段

Blackberry 黑莓标签中的列表字段,blackberry,java-me,tabs,listfield,Blackberry,Java Me,Tabs,Listfield,我有一个带有标签的主屏幕。每个选项卡都有自己的重写navigationClick方法,如下所示 protected boolean navigationClick(int status, int time) { fieldChangeNotify(1); return true; } public void fieldChanged(Field field, int context) { if (_tabArea != null) { if (field

我有一个带有标签的主屏幕。每个选项卡都有自己的重写navigationClick方法,如下所示

protected boolean navigationClick(int status, int time) {
    fieldChangeNotify(1);
    return true;
}
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);
        }
    }
} 
以及其他方法

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();
}
但是,在我的主屏幕中,horizontalfieldmanager中有3个这样的选项卡。重写的fieldChanged是这样实现的

protected boolean navigationClick(int status, int time) {
    fieldChangeNotify(1);
    return true;
}
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);   
 }

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


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

我更改了字段=\u ListField;to Field=this.getFieldWithFocus()。。。现在选项卡可以工作了,但我认为选择列表项不起作用,而不是使用此.getFieldWithFocus()。做一些类似于if(field.isFocus()){///您的代码//}的操作,它可能正在填充,因为当您关注其他字段时,它会触发。