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

回答

0

我知道問題在哪裏。雖然晚了一點,但我想告訴其他人關於這個問題。它給出值1的原因是因爲在Android中,除非您查看它們,否則不會創建選項卡。因此這種方法不起作用。希望這會幫助那些得到空指針異常的人。

相關問題