为每个选项卡使用活动的替代方法

时间:2011-04-17 15:32:47

标签: android android-activity android-tabhost

scenerio是这样的。目前我正在使用以下代码

TabSpec setContent = tabhost.newTabSpec("tab")
                .setIndicator("tabview")
                .setContent(new Intent(tabhost.getContext(), someActivity.class));

但我被告知每个标签不应与某个活动相关联,我们必须遵循这样的代码。

TabSpec setContent = tabhost.newTabSpec("tab").setIndicator("tabView").setContent(R.id.layout)

考虑一个场景,其中tab1调用camera app,tab2解析XML,tab3执行其他一些显示工作。我该如何解决这个问题?因为一旦标签被更改,我必须调用这些方法。如何创建单个活动并为其分配所有职责?

1 个答案:

答案 0 :(得分:0)

您可以使用仅显示视图的标签创建单个活动。唯一的问题是必须在标记内定义视图。

<FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
      <ListView 
        android:id="@+id/list1" 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:layout_weight="1"/>
      <ListView
          android:id="@+id/list2"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:layout_weight="1" /> 
</FrameLayout>

然后,当你在TabActivity中的onCreate里面时:

TabHost tabs = getTabHost();
TabHost.TabSpec commentsTab = tabs.newTabSpec(TAB_TAG_1);
tabs.addTab(commentsTab.setContent(R.id.list1));

TabHost.TabSpec infoTab = tabs.newTabSpec(TAB_TAG_2);
tabs.addTab(infoTab.setContent(R.id.list2));

请注意,为了空间利益,我没有为任何一个标签指定指标。