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

答えて

0

私は問題がどこにあるか知っています。少し遅れていますが、問題について他の人に知らせたいと思います。なぜなら、値1を与える理由は、Androidでは、タブを表示しない限りそのタブが作成されないからです。したがって、そのアプローチは機能しません。これは、NULLポインタの例外を取得する誰かを助けることを願っています。

関連する問題