2011-12-06 18 views
2

私はタブ付きメインスクリーンを持っています。各タブには、このリストフィールドのブラックベリー

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

のように見える独自の上書きnavigationClick方法は、しかし、私のmainscreenに、これらのタブの3はhorizo​​ntalfieldmanagerにありました。オーバーライドされた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

オーバーライドでは、いずれの場合でもsuper.navigationClick()が呼び出されますか?

if(field instanceof ListField)は実行がスーパーコールに到達しないため、navigationClickのコードに基づいて、super.navigationClick()が呼び出されないようです。

+0

はい、これは次のように見えます。http://justpaste.it/mc4 – mikez

+0

フィールドを変更しました= _listfield;フィールドへのフィールド= this.getFieldWithFocus(); ...タブは機能しますが、リスト項目を選択すると機能しません。 – mikez

+0

this.getFieldWithFocus()を使用する代わりに、私は思っています。 if(field.isFocus()){//あなたのコード//} 他のフィールドに集中するとトリガーになるので、おそらく詰まっているでしょう。 –

関連する問題