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()
と呼ぶと、最初に作成されたLinearLayoutだけが参照できることを示す値1が与えられました。 誰も私に説明することができますなぜこれが起こるのですか?Android:TabHostは、参照可能なLinearLayoutを1つだけ作成します。