如何从其他活动创建动态标签

时间:2012-01-29 02:55:06

标签: java android android-activity tabs

我在Test1Activity中有一个方法在TabHost中创建选项卡,但如果我想让Test2Activity调用该方法,并且我必须将newTab方法设置为static,我不能使用Intent,因为它使用“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");
}

如何解决此问题以使其正常工作?

2 个答案:

答案 0 :(得分:1)

使用静态Context有一些技巧。我偶尔做的一件事是创建一个静态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

答案 1 :(得分:0)

为什么活动会这样做?您应该考虑使用服务/广播记录器组合,以便活动可以更新。如果您传递信息 DIRECTLY ,则可以对活动进行活动。