안드로이드 개발 질문/답변
(글 수 45,052)
package com.android.test;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
public class main1 extends TabActivity{ static TabHost mTabHost = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mTabHost = getTabHost(); LayoutInflater.from(this).inflate(R.layout.main, mTabHost.getTabContentView(), true); mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Test1" ,getResources().getDrawable(R.drawable.icon1)).setContent(new Intent(this, test1.class))); mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Test2",getResources().getDrawable(R.drawable.icon1)).setContent(new Intent(this, test2.class))); mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Test3",getResources().getDrawable(R.drawable.icon1)).setContent(new Intent(this, test3.class))); mTabHost.addTab(mTabHost.newTabSpec("tab4").setIndicator("Test4",getResources().getDrawable(R.drawable.icon1)).setContent(new Intent(this, test4.class))); mTabHost.addTab(mTabHost.newTabSpec("tab5").setIndicator("Test5",getResources().getDrawable(R.drawable.icon1)).setContent(new Intent(this, test5.class))); } }
TabActivity 에 관하여 질문이 있는데요...
구글링을 해서 뒤져도 영어로된 외국사이트에도 시원한 답변이 있는곳이 없어서 질문 드립니다 ㅠㅠ
위에 올린 소스와 마찬가지로 여러 액티비티를 화면에 띄워주는건 성공했는데요
그 액티비티 안에서
Intent i = new Intent(this, abc.class);
startActivity(i);
이걸 하면 자꾸 위에 탭이 사라진채로 abc 클래스가 화면 전체를 잡아먹어 버리네요...
저걸 없애려면 main2 를 똑같이 탭 액티비티를 한개더 만들어서
인텐트 이동하는 식으로 노가다를 해야하는건가요 ㅠ
아시는분 있으면 꼭 답변 부탁드립니다아아아
2010.03.06 23:49:25
새롭게 띄우시려는 abc.class 가 이미 TabHost 에 속해 있는 Activity 인 거겠조? TabHost 에 보시면, setCurrentTab 이라고 index 를 통해 원하는 Tab 페이지를 선택 할 수 API 를 제공 합니다. 자식 Activity 에서 ParentActivity 를 접근해서 TabHost 의 값을 설정해 주시면, startActivity 를 호출 하지 않고도 원하는 작업을 수행 하실 수 있을 듯 하네요. 아니면, startActivity 로 Intent 에 특정 값을 넣어서 부모 Activtiy 를 호출 하고, 부모 Activtiy 가 해당 값을 이용해서 CurrentTab 을 변경 할 수도 있을 듯 합니다.