2010-07-07 3 views
4

Мне нужно создать все UI программно «по требованию», это означает, что я не могу использовать какой-либо XML. Это псевдо-код, что я делаю:понимание Набор действийContentView

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. Это половина работает, когда я это делаю, я могу видеть вкладку, но только черный вид под ней, если я нажму на другую вкладку, а затем щелкнуть назад, тогда я вижу вид, все работает по назначению.
Теперь, почему я думаю, что это связано с 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, тогда представление прикрепляется к родительскому объекту, и поэтому оно не появляется в табусте. Чтобы удалить представление из его родителя, этот код может использоваться:

ViewGroup vg = (ViewGroup)(myView.getParent()); 
vg.removeView(myView); 

 Смежные вопросы

  • Нет связанных вопросов^_^