2011. 12. 13. 09:49

안드로이드 액티비티 인텐트(Android Activity Intent) 값을 전달하고, 받아오기

인텐트의 5가지 중 마지막 5번 째는 세 번째의 값을 전달 + 네 번째의 값을 다시 받아옴을 합친 것으로 두 가지가 순차적으로 같이 발생하는 경우입니다.

다섯 번째 버튼, 액티비티를 이동할 때 값을 전달하고 되돌아올때 다시 값을 받아오는 경우.
IntentTestMainActivity.java  <---->  ExtraResultActivity.java

전달하는 값은 "우체국 은행"과 0원이고, 가서 다시 받아오는 값은 4천만원...
전달할 값은 항상 putExtra("전달명", "넘겨주는 값") ;   // 숫자면 "" 없이 그냥 입력.
넘겨주는 액티비티에서 처리하는 메써드는 setResult(Activity.RESULT_OK, intent);

메인 파일, IntentTestMainActivity.java

package net.br ;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class IntentTestActivity extends Activity {
    private static final int REQUEST_CODE_2 = 02 ;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    // 값을 넘겨주고 받는 Extra와 Result Intent
    public void onClickIntentExtraAndResult(View v){
     Intent intent = new Intent(this, ExtraAndResultActivity.class);
     intent.putExtra("account", "우체국 은행");
     intent.putExtra("restAmount", 0);
     this.startActivityForResult(intent, REQUEST_CODE_2);
    }
    // 값을 받아오는 경우의 처리
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 // TODO Auto-generated method stub
 super.onActivityResult(requestCode, resultCode, data);
  
 if(resultCode == Activity.RESULT_OK){
    if(requestCode == REQUEST_CODE_2){
        String resultString = data.getStringExtra("result");
        Toast.makeText(this, "RESULT=" + resultString,
                   Toast.LENGTH_SHORT).show();
     }
   
 }
        else{
           Toast.makeText(this, "취소하고 그냥 옴.", Toast.LENGTH_SHORT).show();
 }
    }    
}
 
ExtraAndResult.java
package net.br ;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class ExtraAndResultActivity extends Activity { 
 private TextView textViewAccount ;
 private TextView textViewRestAmount ;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  this.setContentView(R.layout.extra_and_result);
  
  String account = this.getIntent().getStringExtra("account");
  int restAmount = getIntent().getIntExtra("restAmount", 0);
  
  textViewAccount = (TextView)findViewById(R.id.account);
  textViewRestAmount = (TextView)findViewById(R.id.restAmount);
  
  String none = null ;
  
  if(restAmount == 0) {
   none = "앵꼬~" ;
  }
  
  textViewAccount.setText(account);
  textViewRestAmount.setText(none);
 }
 
 public void onClickOk(View v){
  String result = textViewAccount.getText().toString() + "/ 4천 땡겨옴" ;
  
  Intent intent = new Intent();
  intent.putExtra("result", result);
  this.setResult(Activity.RESULT_OK, intent);
  this.finish();
 }
 public void onClickCancel(View v){
  this.setResult(Activity.RESULT_CANCELED);
  this.finish();
 }
}