0
ArrayList<LinearLayout> llal = new ArrayList<LinearLayout>();
for(int i=0; i<n; i++)
{
final int temp = i;
String tabName = "tab " + i;
TabHost.TabSpec tabSpec = tabHost.newTabSpec(tabName);
TabHost.TabContentFactory tcf = new TabHost.TabContentFactory() {
@Override
public View createTabContent(String tag) {
// TODO Auto-generated method stub
//return llarray[temp];
LinearLayout myll = new LinearLayout(TabActivity.this);
llal.add(myll);
myll.setId(View.generateViewId());
myll.setOrientation(LinearLayout.VERTICAL);
FragmentTransaction ft = getFragmentManager().beginTransaction();
MyFragment mf = MyFragment.newInstance("hi");
ft.add(myll.getId(), mf).commit();
return myll;
}
};
tabSpec.setContent(tcf);
tabSpec.setIndicator(tabName);
tabHost.addTab(tabSpec);
}
我在這裏要做的是我試圖動態創建選項卡,並且每個選項卡將包含一個LinearLayout以添加它們各自的片段。我想要做的是我想爲每個創建的選項卡訪問LinearLayout,因此我打算將它們保存到數組中以供參考。在這個例子中,我使用了一個ArrayList來測試將被添加到ArrayList的LinearLayout的數量。當我打電話給myll.size()
它給了我值1,這表明只有第一個創建的LinearLayout可以被引用。 任何人都可以向我解釋爲什麼會發生這種情況?Android:TabHost只創建一個可以引用的單個LinearLayout