Понимание функции ActivityContentView

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

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); 

Тогда все работает отлично. Любая помощь оценивается, спасибо!

Отвечая на мой собственный вопрос, я обнаружил, что не так, когда setContentView тогда представление прикрепляется к родительскому setContentView и именно поэтому оно не появляется в tabhost. Чтобы удалить представление из его родителя, этот код можно использовать:

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