2012-05-03 2 views
0

나는 2 개의 액티비티를가집니다. 첫 번째는 TabActivity이고 두 번째 액티비티입니다. 인사이드 A 다른 활동을 호출 할 수있는 클릭 가능한 버튼이 있습니다.의도 버튼을 만들지 만 활동 수신기의 탭 호스트가 사라지는 TabActivity

public class A extends TabActivity implements OnClickListener { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     tabHost = getTabHost(); 
     tabHost.addTab(tabHost.newTabSpec("a").setContent(R.id.a).setIndicator("a")); 

     b = new Intent(this,B.class); 
    tabHost.addTab(tabHost.newTabSpec("b").setContent(b) 
      .setIndicator(this.getString(R.string.b))); 

     btn.setOnClickListener(this); 
    } 


    public void onClick(View arg0) { 
     if (arg0 == btn) { 
     startActivity(b); 
     } 
    } 
} 

내부 B, 내가 인터넷에서 클래스에있는 단추를 클릭 할 때마다 데이터를 가져 스레드가 :

public class B extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.search_result); 

     searchHandler = new Handler() { 
      @Override 
      public void handleMessage(Message msg) { 
       draw(msg.obj.toString()); 
      } 
    } 

    Intent intent = getIntent(); 
    if(..) 
     sendHttpRequest(); 
} 

데이터가 올바르게 반환하고 내가 그것을 관리 할 수 ​​있습니다,하지만 내 tabhost 사라 . 내가 어떻게 해결할 수 있니?

답변

1

자동으로 탭을 변경하는 안드로이드 방식과 같은 탭 활동에서 호출 활동 B는 다음과 같습니다

tabHost.setCurrentTab(tab); 

및 사용하지 않는 :

startActivity(intent); 

모든 활동에 그것을 사용하려면 가장 좋은 방법은 TabHost를 공개 및 정적으로 설정하는 것입니다.

0

탭 활동의 하위 활동이 아닌 활동을 호출하는 버튼을 누를 때마다. 탭 호스트가 사라집니다. 그냥이

tabHost.addTab(tabHost.newTabSpec("Tab") 
        .setIndicator("Tab") 
        .setContent(new Intent(this, b.class) 
        )); 
+0

맞긴하지만 내가 갖고 싶은 행동을 어떻게 할 수 있습니까? – jedi

+0

tabchangedListener를 사용하고 tabChanged 메서드에서 메서드를 호출합니다. 탭을 변경할 때마다이 메서드가 호출됩니다. –

+1

나는 내가 할 수있는 워크 플로를 어떻게 구현할 수 있는지 이해하지 못합니다. 오직 당신이 나를 오해하고 있다는 것을 확신하십시오. 탭 B와 연결된 활동을 그려야하지만 탭 전환은 클릭하지 않아야합니다. 그것을 클릭하면, 나는 활동 (A)에서 보았던 버튼을 클릭하여 생성 된 것을 표시 할 필요가 있지만, 탭 전환은 계속 존재할 것입니다. 귀하의 회신이 여전히 정확하다고 생각하면 더 많은 설명을 원합니다. – jedi