원본 : http://c1dong8.blog.me/10099243451

        //탭호스트 생성
        claTabHost thMain = new claTabHost(this, (TabHost)findViewById(R.id.TabHost));
        
        //레이아웃 추가
        thMain.AddLayout(R.layout.tab_1);
        thMain.AddLayout(R.layout.tab_2);
        thMain.AddLayout(R.layout.tab_3);
        
        //탭추가
        thMain.AddTab("tab1", "탭1",-1, R.id.tab1);
        thMain.AddTab("tab3", "탭2", -1, R.id.tab2);
        thMain.AddTab("tab2", "탭3", -1, R.id.tab3);

단 7줄로 탭3개를 추가한다.
10줄 후에 공개 됩니다~
(링크 누르라고!)

레이아웃 분리하여 관리하는 방법을 숙지했다는 가정하에 재작되었습니다.






import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.widget.TabHost;

/** 
* claTabHost
* 
* @author DangGun Roleeyas ( http://c1dong8.blog.me ) 
* @version 1.0 ( 2010.11.28 )
* 
* 탭 호스트
*  
* 이 클래스는 그대로 사용하지 말고 복사해서 사용해야 합니다.
* 이 클래스는 뷰들의 세팅작업을 한번에 완료하고 제어하는데 목적이 있습니다.
* 
* 클래스 자체적으로 뷰객체를 저장하고 있으므로 외부에서는 이 클래스의 객체만 생성해서 사용하세요.
* GetOvject() 메소드를 통해 저장되있는 객체에 직접 접근 할수 있습니다.
* 
* 복사한후 자신이 사용하려는 동작을 할수 있게 직접 수정하셔야 합니다.
* 이 클래스의 내용은 참고용으로 사용 하시기 바랍니다.
*
* 메인 레이아웃에만 탭으로쓸 레이아웃이 존재한다면 객체 생성후 AddTab()를 호출하여 레이아웃을 탭컨탠츠로 사용하실 수 있습니다.
* 메인 레이아웃 이외의 레이아웃을 사용하시려면 AddLayout()으로 해당 래이아웃을 추가한후 탭을 추가하셔야 에러가 발생하지 않습니다.
* 
* 탭 호스트가 작동하기 위해서는 메인레이아웃에 TabHost, TabWidget 가 꼭있어야 합니다.(일반 탭 생성과 동일 합니다.)
*/
public class claTabHost 
{
 Context context;
 
 TabHost tabHost;
 
 /**
 * 생성자
 * 
 * 탭 호스트를 저장하고 
 * 
 * 연결할 데이터를 미리 설정해놓는 방식은 데이터를 정적일때 사용합니다.연결할 데이터
 * 
 * @param context 나를 소유하고 있는 액티비티
 * @param tabHost 이 클래스 내에 탭호스트 객체가 저장되므로 객체를 따로 저장 하실 필요는 없습니다.
 */
 public claTabHost(Context context, TabHost tabHost)
 {
 
  this.context = context;
  
  this.tabHost = tabHost;
  
  //findViewById를 이용해 TabHost인스턴스를 얻은경우 꼭 호출 필요
  this.tabHost.setup();
  
 }
 
 /**
  * 내가 소유하고있는 뷰를 리턴한다.
  * 
  * @return 이 클래스가 소유하고 있는 객체를 리턴합니다.
  */
 public TabHost GetOvject()
 {
  return this.tabHost;
 }
 
 /**
  * 레이아웃을 추가합니다.
  * 
  * @param resource 추가할 레이아웃 리소스번호
  */
 public void AddLayout( int resource)
 {
  LayoutInflater.from(context).inflate(resource, tabHost.getTabContentView(), true);
 }
 
 /**
  * 탭을 추가한다.
  * 
  * @param strID 추가할 탭의 아이디
  * @param strTitle 추가할 탭의 제목
  * @param intTabIcon 추가할 탭에 넣을 아이콘. -1을 넣으면 사용 안함입니다.
  * @param intContentViewId 추가할 탭에 넣을 컨텐츠의 레이아웃아이디
  */
 public void AddTab(String strID, String strTitle, int intTabIcon , int intContentViewId)
 {
  //Tab builder 객체생성 
        TabHost.TabSpec spec;
        
  //Tab 세팅 
        spec = tabHost.newTabSpec(strID); // Tab Builder 객체 생성
        
        //아이콘 등록
        Drawable drawTabIcon;
        
        //아이콘 정보가 안들어 왔는지?
        if(intTabIcon < 0)
        {
         //안들어왔으면 널처리
         drawTabIcon = null;
        }
        else
        {
         //들어왔으면 아이콘을 부른다.
         drawTabIcon = this.context.getResources().getDrawable(intTabIcon);
        }
        
        //제목,
        spec.setIndicator(strTitle, drawTabIcon);
        
  //Tab 내용
        spec.setContent(intContentViewId);
        
        
        //Tab 등록
        tabHost.addTab(spec);
        
 }
}