2012-01-29 99 views
1

我在Test1Activity中創建了一個TabHost中的選項卡的方法,但如果我想讓Test2Activity調用該方法,並且必須將newTab方法設置爲靜態,我無法使用意圖因爲它利用「這個」來設置班級。如何從另一個活動創建動態選項卡

public class Test1Activity extends TabActivity { 
    public static void newTab(String tabIdentifier) { 
     TabHost.TabSpec spec; // Reusable TabSpec for each tab 
     Intent intent = new Intent().setClass(this, ChatActivity.class); 
     spec = Test1Activity.tabHost.newTabSpec(tabIdentifier).setIndicator(tabIdentifier, null).setContent(intent); 
     tabHost.addTab(spec); 
     modifyTabSize(); 
    } 
} 

public class Test1Activity extends TabActivity { 
    Test1Activity.newTab("Joe"); 
} 

我該如何解決這個問題才能正常工作?

回答

1

有幾個技巧使用靜態Context。我偶爾做的一件事是創建一個靜態上下文並在onCreate中初始化它。例如:

public class Example extends Activity { 
    public static Context context; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     context = this; 
    } 
} 

然後,當你創建一個新的Intent對象,使用context代替this

+0

甜,謝謝!這對我有效。 – 2012-01-30 13:02:47

0

爲什麼活動會這樣做?您應該考慮使用服務/廣播級聯繫人組合,以便活動可以更新。如果您直接傳遞信息,可以完成活動活動。

相關問題