Список полей во вкладках BlackBerry - PullRequest
2 голосов
/ 06 декабря 2011

У меня есть главный экран с вкладками. Каждая вкладка имеет свой переопределенный метод 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();
}

Однако на моем главном экране есть три из этих вкладок в горизонтальном диспетчере полей. Переопределенное поле 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);
        }
    }
} 

, который переключает вкладки. У меня есть навигационный клик ниже, который обрабатывает щелчки в поле списка, однако с тех пор, как я переопределил навигационный клик, переключение вкладок больше не работает. У кого-нибудь есть идеи, почему?

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 Ответ

1 голос
/ 06 декабря 2011

Ваш переопределение вызывает super.navigationClick () во всех случаях?

Исходя из вашего кода для navigationClick, похоже, что super.navigationClick () не будет вызываться, поскольку if(field instanceof ListField) не позволяет выполнению достичь супер-вызова.

...