我在互联网上发现了这个自定义的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()方法和不同的活动。
它对我有效!希望这能对你有所帮助。