2012-01-29 20 views
1

私はTabHost内にタブを作成するTest1Activityのメソッドを持っていますが、Test2Activityメソッドを呼び出そうとしていて、newTabメソッドを静的に設定する必要がありますそれはクラスを設定するために "this"を利用するためです。別のアクティビティから動的なタブを作成する方法

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を使用するには、いくつかのトリックがあります。私が時々行ったことの1つは、静的コンテキストを作成し、それをonCreateで初期化することです。たとえば:

public class Example extends Activity { 
    public static Context context; 

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

その後、あなたは新しいIntentオブジェクトを作成するとき、thisの代わりにcontextを使用しています。

+0

甘い、ありがとう!それは私のために働いた。 –

0

アクティビティはなぜこれを行うのですか?アクティビティが更新できるように、service/broadcastrecieverの組み合わせを使用することを検討する必要があります。あなたが情報を渡すならば、アクティビティへのアクティビティはDIRECTLYです。