본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Activity 간의 통신.

by 돼지왕 왕돼지 2012. 2. 19.
반응형


안녕하세요 돼지왕 왕돼지입니다.
오늘은 액티비티간의 통신 ( 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 로 거의 대부분의 타입에 대해 정의되어 있음.
 
public void startActivityForResult (Intent intent, int requestCode)
// 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

 

 <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();


 
로그인 없이 추천 가능합니다. 손가락 꾸욱~


반응형

댓글