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();
}

ただし、私のメイン画面では、水平フィールドマネージャーにこれらのタブが 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);
        }
    }
} 

タブを切り替えます。リストフィールドのクリックを処理するナビゲーションクリックが下にありますが、ナビゲーションクリックをオーバーライドして以来、そのタブの切り替えは機能しなくなりました。誰でも理由がわかりますか?

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 のコードに基づいて、if(field instanceof ListField)実行がスーパー コールに到達できないため、super.navigationClick() が呼び出されないように見えます。

于 2011-12-06T07:06:41.827 に答える