안드로이드 개발 질문/답변
(글 수 45,052)
D:\android\FinanceCalculator\src\com\FinanceCalculator\FinanceCalculator.java
package com.FinanceCalculator; import android.app.TabActivity; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.EditText; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; public class FinanceCalculator extends TabActivity { TabHost tabHost; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //출력화면생성 tabHost = getTabHost(); tabHost.addTab(tabHost.newTabSpec("SetTab1") .setIndicator("입력") .setContent(new Intent(this, Input.class))); tabHost.addTab(tabHost.newTabSpec("SetTab2") .setIndicator("출력") .setContent(new Intent(this, Output.class))); tabHost.addTab(tabHost.newTabSpec("SetTab3") .setIndicator("그래프") .setContent(new Intent(this, Graph.class))); tabHost.addTab(tabHost.newTabSpec("SetTab4") .setIndicator("챠트") .setContent(new Intent(this, Chart.class))); tabHost.addTab(tabHost.newTabSpec("SetTab4") .setIndicator("결과") .setContent(new Intent(this, Output.class))); //탭 변경시 이벤트 선언 tabHost.setOnTabChangedListener(new OnTabChangeListener(){ @Override //탭 변경시 이벤트 제어 public void onTabChanged(String tabId){ Log.v("tabId===", tabId); if( tabId.equals("SetTab2")){ }else if(tabId.equals("SetTab3")){ }else if( tabId.equals("SetTab4")){ }else if(tabId.equals("SetTab5")){ } } }); } }
안녕하세요~ 이제 막 안드로이드에 입문한 초짜입니다.
위에 소스처럼 탭액티비티를 부를때 미리 인텐트로 탭을 5개 만듭니다.
해당 인텐트에는 입력 탭을 제외하곤 나머지는 입력탭의 데이터를 가지고 와서 화면을 만들어야 하는 부분입니다.
탭체인지 이벤트시 입력 탭의 인텐트의 입력값을 이미 가지고온 다른탭들의 인텐트에 그값을 전달할수 있는지요??
레퍼런스를 찾아보았지만 따로 데이터값과 함께 넘겨주는 명령어는 찾지 못했습니다.
Tab의 경우 해당 Tab을 열기 전까지는 Activity를 부르지 않더군요...
한가지 방법으로는 TabActivity를 상속받는 클래스나 실행시 열리는 처음 Tab에서 Intent한 Activity에
주고받을 내용의 함수들을 static으로 선언하여 주고받는 방법이 있습니다.
static을 많이 사용할시에는 메모리를 많이 잡아먹는 문제가 있으니 꼭 필요한것들만 쓰고
최대한 줄일수 있으면 좋습니다.