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。
有谁可以向我解释为什么会这样?
答案 0 :(得分:0)
我知道问题出在哪里。虽然有点晚了,但我想告诉别人这个问题。它给出值1的原因是因为在Android中,除非您查看它们,否则不会创建选项卡。因此,这种方法不起作用。希望这会帮助那些获得空指针异常的人。