마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 TabActivity 탭 전환방법

0 추천
직접 탭을 터치하지않고 소스코드로 탭을 이동시켜주려면

 

어떻게해야하나요 ??

 

그냥 액티비티를 띄워버리니 텝이 사라져버려서요 ..

 

소스코드로 텝만 전환하고싶은데 어떻게 해야하나요 ?
음무 (17,820 포인트) 님이 2014년 3월 18일 질문

2개의 답변

+1 추천
 
채택된 답변

메인엑티비티가 탭액티비티를 상속받은 클래스라고 가정하고 대략 아래와 같이 2개의 액티비티를 추가했다면

 static TabHost tabHost;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
     
 //TabActivity 내부의 TabHost객체를 가져옵니다.
     
 tabHost = getTabHost();
 
 // 인텐트 객체 변수를 선언합니다. 이 변수는 재사용 됩니다.  
 
 Intent intent; 

 //방목록 액티비티를 위한 인텐트를 생성합니다.         

 intent = new Intent().setClass(this, RoomList.class);     

 tabHost.addTab(tabHost.newTabSpec("Region").setIndicator("지역 방 목록",  getResources().getDrawable(R.drawable.ic_launcher)).setContent(intent)); 

 //참여목록 액티비티를 위한 인텐트를 생성하며 과정은 위와 같습니다.        

 intent = new Intent().setClass(this, Participants.class);        

 tabHost.addTab(tabHost.newTabSpec("Participant").setIndicator("참여목록", getResources().getDrawable(R.drawable.ic_launcher)).setContent(intent)); 

 }

 

//--------------------------------------------------------------------------------------------------------------------

Participants 클래스 (2번째 탭) 에서는 버튼을 추가하여 클릭했을 때 변경하도록 했어요

 

 Button bt = (Button)findViewById(R.id.button1);
     bt.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    MainActivity.tabHost.setCurrentTab(0); // 해당 조건 만족시 요렇게 해주시면 될거 같네요
   }
      
     });

초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 19일 답변
음무님이 2014년 3월 19일 채택됨
됐습니다. 텝액티비티의 텝호스트를 스테틱으로 해서 불러와서 사용하니 되네요 ㅠ_ㅠ 감사합니다 !!
+1 추천
TabHost tabHost = getTabHost();

tabHost.addTab();

뭐 이런식으로 탭을 추가하셨다면

 

tabHost.setCurrentTab(인덱스) 라는 함수가 있는 걸로 알고 있어요
초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 18일 답변
MainTabPanel 이라는 TabActivity를 상속받은 탭 액티비티가 있습니다.
여기서 add 다 해줬고 ..위에쓰신데로

그리고 다른 액티비티에서 특정 조건 완료시
탭 이동을 하기 위해

MainTabPanel mainTab = (MainTabPanel)getParent();
                mTabHost = mainTab.getTabHost();
                mTabHost.setCurrentTab(2);
이렇게 줬는데
                mTabHost = mainTab.getTabHost(); 여기서
ClassCastException 이 발생하네요 .. ㅠㅠ
부탁드립니다 ~ 도와주세요 ㅠ
에러 내용은 패키지명.선언한액티비티 cannot be cast to 패키지명.MainTabPanel
이렇게 나와요 ..
제가 getParent() 를 써본적이 없는데 그런식으로 사용해도되는가요?
http://www.androidpub.com/414992
http://akj61300.blog.me/80100065642
상위 위젯이나 컨테이너를 리턴해준다고 하는뎅.. 흠~

그리고 다른액티비티에서 탭을 세팅한다는 것이 말이 안되는 것 같긴한데..
특정 조건 완료시 탭액티비티로 전환한다음 세팅하는 방식으로 하면 어떨까요? ㅎㅎ
탭액티비티로 전환한 다음 세팅하려면 어떻게해야하는지 ..

그런데 지금은 구성이 실행시 탭 액티비티가 실행되고 다른 액티비티 위에 탭형식으로 표시됩니다.

탭 액티비티에 대한 지식이 부족해 이 설명이 맞는지는 모르겠지만 ..
A액티비티,B액티비티,C액티비티 어디를 가도 탭은 유지되는상태인데

텝이 만약 3개라고 치면
A액티비티에서 다음을 누르면 B액티비티로 이동하고, 또 다음을 누르면 C액티비티로 이동합니다. 또 C에서 확인을 누르면 2번탭으로 이동해야하는데 ...

죄송하지만 C에서 탭으로 이동후 2번탭을 활성화하려면 어떻게 해야 하나요 ?? ㅠㅠ
...