안드로이드 개발 질문/답변
(글 수 40,700)
펍에는 처음으로 글을 써보네요.
TabActivity클래스에서 TabHost 객체 th를 생성하였고 addTab 메소드로 3개의 탭을 만들었습니다.
그리고 Start클래스에서 버튼 3개를 등록하여 리스너를 동작시켰습니다.
Start클래스의 버튼1을 누르면 탭1을, 버튼2를 누르면 탭2, 버튼3을 누르면 탭3을 실행되게 하고 싶은데 어떻게 하면 좋을까요?
뭐 버튼1의 경우에는 intent 불러오면서 그냥 TabActivity를 불러오게 하면 되지만 처음 불러오면서 자동으로 탭2, 탭3을 실행하게 하려고 질문드립니다.
TabActivity클래스에서 TabHost 객체 th를 생성하였고 addTab 메소드로 3개의 탭을 만들었습니다.
그리고 Start클래스에서 버튼 3개를 등록하여 리스너를 동작시켰습니다.
Start클래스의 버튼1을 누르면 탭1을, 버튼2를 누르면 탭2, 버튼3을 누르면 탭3을 실행되게 하고 싶은데 어떻게 하면 좋을까요?
뭐 버튼1의 경우에는 intent 불러오면서 그냥 TabActivity를 불러오게 하면 되지만 처음 불러오면서 자동으로 탭2, 탭3을 실행하게 하려고 질문드립니다.
2010.09.27 16:56:24
TabHost tabHost; TabHost.TabSpec spec; Intent intent; tabHost = getTabHost(); intent = new Intent().setClass(this, FirstTab.class); spec = tabHost.newTabSpec("tab1").setIndicator("탭1").setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass(this, SecondTab.class); spec = tabHost.newTabSpec("tab2").setIndicator("탭2").setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass(this, ThirdTab.class); spec = tabHost.newTabSpec("tab2").setIndicator("탭3").setContent(intent); tabHost.addTab(spec); tabHost.setCurrentTab(0);
이렇게 썼던 기억이...
2010.09.28 09:31:52
Start 클래스에 Intent i를 선언했다고 하고 버튼리스너 스위치문에 각각 i.putExtra("index", "값1"); 이런 식으로 넘겨준 다음, TabActivity 클래스에서 String index를 선언한 후에 index = i.getStringExtra("index"); 그리고
if(index.equals("값1")) {
th.setCurrentTab(0);
}else if(index.equals("값2")) {
th.setCurrentTab(1);
}
이런 식으로 해결봤습니다. 역시 현업에 종사하는 친구가 짱이네요...
2010.09.28 09:47:44
여러 방법이 있겠지만 위의 방법은 리스너와 값 비교를 계속 거쳐야해서
보통은 탭을 추가 시킬때 인텐트를 각각 정의해서 쓰는 것 같습니다.
ApiDemos에서도 아래와 같은 방법을 사용하는데 참고 하시길 바랍니다.
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final TabHost tabHost = getTabHost(); tabHost.addTab(tabHost.newTabSpec("tab1") .setIndicator("list") .setContent(new Intent(this, List1.class))); tabHost.addTab(tabHost.newTabSpec("tab2") .setIndicator("photo list") .setContent(new Intent(this, List8.class))); // This tab sets the intent flag so that it is recreated each time // the tab is clicked. tabHost.addTab(tabHost.newTabSpec("tab3") .setIndicator("destroy") .setContent(new Intent(this, Controls2.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))); }
답변자는 아니지만 저도 이번에 탭호스트를 이용해서 어플을 하나 만들려고하는데 이부분에 대한 시원한 답변이 올라오면 좋겠네요^^:
유심히 지켜보고있어야겠네요;ㅁ;