2009-04-21 10 views
0

コンテンツエリア内から特定のタブバーにタブを追加したいとします。コンテンツ領域は動的で、異なるクラスファイルに配置されています。タブバーの現在の状態(新しいタブバーオブジェクトを作成しない)を取得するための唯一の方法は、オブジェクトにアクセスするための静的メソッドと変数を作成することです。しかし、私はそれを取得した後、タブバーの変更を行うことに問題があります。私は文字列を検索するなど、大きな問題はなく関数を呼び出すことができますが、タブを追加することはできません。ここでは一般的な要点だ:XYZという名前の一つのクラスで別のタブからGWTタブを追加する

:私は使用することができます

MyPersonalTabPanel.getAppInstance().getXYZTabPanel().add(mywidget, "My Widget"); 

:私の他のファイルに

private static MyPersonalTabPanel mypersonalTabPanel; 

public XYZ { 
    myperosonalTabPanel = this; 
} 

、ボタンのクリック時に、私はこれをトリガしています私の関数 "getXYZTabPanel()"はエラーなしですが、 "追加"しようとすると単に白い画面でクラッシュし、関連するエラーはありません。どんな助け?以前はプロジェクトにタブを追加していましたが、このような静的オブジェクトを使って行うことはできません。

これはまだonClickメソッドの中にはありませんが、私は静的セッション変数にアクセスするためにこれを行う必要がありますか?基本的にはページが読み込まれる瞬間と呼ばれています。

+0

私はちょっと意図が何であるか混乱しています。あなたは別のクラスからタブを追加する方法を見つけたいですか?静的フィールドを使って動作させる方法を尋ねていますか? – Chii

答えて

1

初期化の順序を確認しますか?タブを追加するXYZのインスタンスが、あなたの直近の "new XYZ()"の呼び出しによって作成されたインスタンスであることを確認する必要があります。また、あなたはそれが既にnew'edされていることを確認する必要がありますタブを追加しようとします。

また、私はXYZがTabPanelを拡張するMyPersonalTabPanelを拡張すると仮定しますか?明確にするために、このコードは、自分の状況には適用されない:

public class MyPersonalTabPanel extends TabPanel { 
    public static MyPersonalTabPanel instance; 

    public MyPersonalTabPanel() { 
    instance = this; 
    } 
} 

public class TestClass { 
    public void createPanel() { 
    RootPanel.get().add(new MyPersonalTabPanel()); 
    } 
    public void addTab(Widget widget) { 
    MyPersonalTabPanel.instance.add(widget, "My Widget"); 
    } 
} 

はaddTab(ウィジェット)の呼び出しが発生する前にTestClassをのcreatePanel()が呼び出されることを確認します。

関連する問題