我必须在所有选项卡中添加n个具有相同布局的选项卡(比如在xml中声明的llItemList)。在我创建n个选项卡的下面的代码段中。所有布局都使用llItemList的相同副本,而不是选项卡自己的副本。能否请您告诉我如何在将动态创建的所有选项卡中创建llItemList的单个副本。 在此先感谢
//---------------------------------
// insert the tabs dynamically
//---------------------------------
for (int i=1; i<=n; i++){
final String tabName = "tab" + Integer.toString(i);
final TabSpec ourSpec = th.newTabSpec(tabName);
ourSpec.setContent(new TabHost.TabContentFactory() {
public View createTabContent(String tag) {
ourSpec.setContent(R.id.llItemList);
TextView text = new TextView(NewTicket.this);
String tabText = tabName;
text.setText("You've created a new tab " + tabText);
return (text);
}
});
ourSpec.setIndicator(tabName);
th.addTab(ourSpec);
}
答案 0 :(得分:1)
您应该通过指定
指定TabSpec
TabHost.TabContentFactory
你的代码同时做到了!
将您的代码更改为以下之一:
for (int i=1; i<=n; i++){
final String tabName = "tab" + Integer.toString(i);
final TabSpec ourSpec = th.newTabSpec(tabName);
ourSpec.setContent(new TabHost.TabContentFactory() {
public View createTabContent(String tag) {
TextView text = new TextView(NewTicket.this);
String tabText = tabName;
text.setText("You've created a new tab " + tabText);
return (text);
}
});
ourSpec.setIndicator(tabName);
th.addTab(ourSpec);
}
或
for (int i=1; i<=n; i++){
final String tabName = "tab" + Integer.toString(i);
final TabSpec ourSpec = th.newTabSpec(tabName);
ourSpec.setContent(R.id.llItemList);
ourSpec.setIndicator(tabName);
th.addTab(ourSpec);
}
修改强>
要保留评论中提到的ListView
的同一个实例,请执行以下操作:
TabHost.OnTabChangeListener
removeView()
,然后将addView()
调用到新父级。