如何更改android Tabhost中的选项卡内容?

时间:2014-07-08 12:33:48

标签: android android-tabhost

我有3个Tabs Tab1,tab2,Tab3。在tab1中我正在加载page1.java。在第1页中有一个下一步按钮。我需要在点击Page1.java上的下一个按钮时更改为page2.java。我只需要更改内容。我需要那里的标签永久。可能吗。 我在下一个按钮点击时这样做,

Intent nextPageIntent = new Intent(context, Page2.class);
startActivity(nextPageIntent);

请帮帮我。

3 个答案:

答案 0 :(得分:1)

<强>更新

因此,您需要在标签中使用ActivityGroup来更改活动。

    TabHost tabHost = getTabHost();

    tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("Page1").setContent(
            new Intent(this, Page1.class)));
    tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("Page2").setContent(
            new Intent(this, Page2.class)));
    tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("Page3").setContent(
            new Intent(this, Page3.class)));

Page1注意在第一个标签中显示哪个活动。使用setContentView,您可以在触发操作后将另一个视图带到前面。

    Intent intent = new Intent(context, Page2.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    View view = Page1.group.getLocalActivityManager().
                startActivity(intent).getPage2View();

    Page1.group.setContentView(view);

您需要告诉ActivityGroup哪个视图位于顶部并设置相应的Flag,以便View位于顶部。

当然,现在您必须跟踪前面的活动,他们的行为以及按下后退按钮会发生什么。但这为您提供了自定义行为的空间。

更多来自:use-android-activitygroup-within-tabhost-to-show-different-activity

答案 1 :(得分:0)

tabHost.setCurrentTab(2)应该这样做。

答案 2 :(得分:0)

您可以尝试replacing fragment

因此,请将所有页面(针对一个标签页)保留在单独的片段中。加载片段1 - 即最初的Page 1,然后单击Next Button,替换片段,如下所示:

nextBtn.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View arg0) {

        Page2Fragment fragment = (Page2Fragment)myFragmentManager.findFragmentByTag(TAG_1);

        if (fragment == null) {

            //load page 2 in fragment
            FragmentTransaction fragmentTransaction = myFragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.maincontainer, myFragment1, TAG_1);
            fragmentTransaction.commit();
        }
    }
});

希望它有所帮助。