반응형
안녕하세요 돼지왕 왕돼지입니다.
오늘은 액티비티간의 통신 ( Activity's communication ) 에 대해 알아보겠습니다.
무슨 말이야?
액티비티간의 통신이라 하면, 한 Activity 에서 다른 Activity 를 호출하고, 호출된 Activity에서 처리한 결과를 호출한 Activity 에서 아는 방법에 대해 말하는 것입니다. 물론 호출하는 Activity 에서 호출받는 Activity 에 정보를 보내는 것도 포함이 되죠. 어떻게 하냐구요? Intent 에 Extra 를 넣어 정보를 전달하고, onActivityResult() 함수를 통해 결과를 전달 받습니다.
API 들과 예제를 보여줘봐.
<APIs>
Intent putExtra(String name, int value)
// 거의 대부분의 타입에 대해 정의 되어 있음
// 거의 대부분의 타입에 대해 정의 되어 있음
int getIntExtra (String name, int defaultValue)
// put 과 pair 로 거의 대부분의 타입에 대해 정의되어 있음.
// put 과 pair 로 거의 대부분의 타입에 대해 정의되어 있음.
public void startActivityForResult (Intent intent, int requestCode)
// requestCode는 0 이상. 음수는 리턴을 받지 않겠다는 의미
// requestCode는 0 이상. 음수는 리턴을 받지 않겠다는 의미
protected void onActivityResult(int requestCode, int resultCode, Intent data)
// 호출된 액티비티가 종료되면 이 함수가 자동으로 호출된다.
// 호출된 액티비티가 종료되면 이 함수가 자동으로 호출된다.
public final void setResult (int resultCode, Intent data)
// 결과값을 세팅, requestCode = RESULT_OK or RESULT_CANCEL
// 결과값을 세팅, requestCode = RESULT_OK or RESULT_CANCEL
<example>
<caller activity>
final static int ACT_TEST = 1;
Intent intent = new Intent(this, .class);
intent.putExtra("text", "gamza");
startActivityForResult(intent, ACT_TEST);
protected void onActivityResult (int requestCode, int resultCode, Intent data){
switch(requestCode){
case ACT_TEST:
if (resultCode== RESULT_OK){
//To Do
}
break;
}
}
<callee activity>
Intent intent = getIntent();
String a = intent.getStringExtra("text");
Intent intent2 = new Intent();
intent.putExtra("text2", "gamza2");
setResult(RESULT_OK, intent);
finish();
setResult(RESULT_CANCLED);
finish();
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Content Provider ( 콘텐트 프로바이더 ) 에 대한 모든 것. (0) | 2012.02.20 |
---|---|
[Android/안드로이드] CustomView 생성시 override 해야 할 function들 (17) | 2012.02.19 |
[Android/안드로이드] 암시적 인텐트 ( Implicit Intent ) 에 대해 알아보아요. (0) | 2012.02.19 |
[Android/안드로이드] 액티비티 생명주기. ( Activity Life cycle ) (0) | 2012.02.19 |
[Android/안드로이드] Activity의 상태 저장 ( SharedPreference와 Bundle 을 이용하는 빙법) (0) | 2012.02.19 |
댓글