2010-07-07 42 views
4

我需要以編程方式「按需」創建所有UI,這意味着我無法使用任何XML。這是我做的僞代碼:瞭解活動的setContentView

View v = new MyView(); 
activity.setContentView(v); 

tabHost = new TabHost(); 
.... 
tabHost.setup(); 
TabSpec tabSpec = _tabHost.newTabSpec(page); 
     tabSpec.setIndicator(title); 
     tabSpec.setContent((TabContentFactory) this); 

activity.setContentView(tabHost); 

所以當TabContentFactory叫我回到這是當前活動的內容視圖的視圖。基本上我所做的是採用當前視圖並將其包裝在tabhost中。 它的一半工作,當我這樣做時,我能夠看到tabbar,但只有黑色視圖下面,如果我點擊其他選項卡,然後點擊返回,然後我可以看到視圖,一切按預期工作。
現在爲什麼我認爲這是關係到setContentView,因爲當我這樣做:

View v = new MyView(); 
// activity.setContentView(v); // we don't use it as current content view 


tabHost = new TabHost(); 
.... 
tabHost.setup(); 
TabSpec tabSpec = _tabHost.newTabSpec(page); 
     tabSpec.setIndicator(title); 
     tabSpec.setContent((TabContentFactory) this); 

那麼一切都可以正常使用。 任何幫助表示感謝,謝謝!

回答

4

回答我自己的問題時,我發現什麼是錯的,當調用setContentView時,視圖會附加到父項,這就是爲什麼它不會出現在tabhost中。要從其父母移除視圖,可以使用此代碼:

ViewGroup vg = (ViewGroup)(myView.getParent()); 
vg.removeView(myView); 
相關問題