2010-07-07 5 views
4

모든 UI를 "주문형"으로 프로그래밍 방식으로 작성해야하는데 이는 XML을 사용할 수 없음을 의미합니다. Activity의 이해 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가 호출 될 때 나는 현재 활동의 내용이다보기를 반환 : 이것은 내가하는 일의 의사 코드입니다. 기본적으로 내가하는 일은 현재보기를 가져 와서 탭 호스트에 배치하는 것입니다. 이 작업을 수행 할 때마다 탭바를 볼 수 있지만 그 아래 검은 색보기 만 있습니다. 다른 탭을 클릭 한 다음 다시보기를 클릭하면 모든 것이 의도 한대로 작동합니다.
지금 왜 내가이 작업을 수행 할 때 때문에이 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);