如何将活动分配为选项卡内容



我在互联网上发现了这个自定义的TabWidget布局。问题是,我不知道如何在选项卡中插入内容。有人能帮忙吗?假设我有活动1、活动2和活动3。这是代码:

public class MainActivity extends Activity {
private TabHost mTabHost;
private void setupTabHost() {
    mTabHost = (TabHost) findViewById(android.R.id.tabhost);
    mTabHost.setup();
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    setupTabHost();
    mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);
    setupTab(new TextView(this), "EASY");
    setupTab(new TextView(this), "MEDIUM");
    setupTab(new TextView(this), "INTENSE");
}
private void setupTab(final View view, final String tag) {
    View tabview = createTabView(mTabHost.getContext(), tag);
    TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() {
        public View createTabContent(String tag) {return view;}
    });
    mTabHost.addTab(setContent);
}
private static View createTabView(final Context context, final String text) {
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
    TextView tv = (TextView) view.findViewById(R.id.tabsText);
    tv.setText(text);
    return view;
}
}

通过制作活动自己的文件,在manifest中声明它们,并在它们的onCreate中放入setContentView(R.layout.activitylayout);,将内容放入活动中。如果内容是静态的,那么它会以适当的布局进行完整的描述。

好的,明白了。然后作为view返回这里的公共View createTabContent(String tag) {return view;},即您要放置在那里的布局。某些列表ViewOfMyPictures或其他内容。

为特定的"活动"创建一个意向,并通过"setContent"将意向添加到tabSpec中,而不是当前创建TabContentFactory的位置-就像这样(从Android开发人员指南中的Hello Tabwidget教程中复制/粘贴):

Intent intent;  // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, ArtistsActivity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                  res.getDrawable(R.drawable.ic_tab_artists))
              .setContent(intent);
tabHost.addTab(spec);

尝试查看TabHost.TabSpec的文档,特别是setContent(Intent intent)

创建诸如Intent tabIntentA = new Intent(this, SomeActivity.class);之类的意图,并将它们传递给setContent(...)方法。

编辑:

看看选项卡布局教程的第6节,尤其是这段代码。。。

Intent intent;  // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, ArtistsActivity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                    res.getDrawable(R.drawable.ic_tab_artists))
                    .setContent(intent);
tabHost.addTab(spec);

无论如何,你可能会更好地遵循该教程,而不是你在问题中发布的代码。

我也面临同样的问题,并通过修改下面给出的代码来解决它。

setupTab1(new TextView(this), "MEDIUM");
setupTab2(new TextView(this), "INTENSE");

private void setupTab1(final View view, final String tag) {
View tabview = createTabView(mTabHost.getContext(), string);
Intent intent1 = new Intent().setClass(this, DummyActivity1.class);
TabSpec tab1 = mTabHost
    .newTabSpec("TAB1")
    .setIndicator(tabview)
    .setContent(intent1);
mTabHost.addTab(tab1);

}

private void setupTab2(final View view, final String tag) {
View tabview = createTabView(mTabHost.getContext(), string);
Intent intent2 = new Intent().setClass(this, DummyActivity2.class);
TabSpec tab2 = mTabHost
    .newTabSpec("TAB2")
    .setIndicator(tabview)
    .setContent(intent2);
mTabHost.addTab(tab2);

}

以前我们对所有Tabview都有setupTab()方法。现在我们有了不同的setupTab()方法和不同的活动。

它对我有效!希望这能对你有所帮助。

相关内容

  • 没有找到相关文章

最新更新