티스토리 뷰

반응형

 

하나의 Activity에서 또 다른 Activity를 호출하는 방법은 위 두가지 방법이 있다. 위 두가지 함수 모두 생성되는 Activity에게 Intent를 전달하게 되면 새로운 Activity가 실행된다.

 

startActivityForResult 함수는 startAcivity 함수와 동일하게 동작하지만, 역으로 새로 생성된 Activity에서 기존 Acitivity로 데이터를 전달하는 기능이 추가된 함수이다.

 

 

결과적으로 startActivityForResult 함수는 이러한 형태로 역으로 Intent를 한번 더 돌려주게 된다.

 

 


전송측 코드

public void onClick(View v) {
	switch(v.getId()) {
    	case R.id.load_pic_url_btn:
        	Intent intent = new Intent();
            intent.setClass(this, ActivityB.class);
            intent.putExtra("PIC_URL", mSendPicUrl);
            startActivityForResult(intent, 0);
            break;
    }
}

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
	if(resultCode == RESULT_OK) {
    	String picFileUrlStr = intent.getStringExtra("RESULT_PIC_FILE_URL");
        TextView picFileUrlTv = (TextView)findViewId(R.id.result_pic_file_url);
        picFileUrlTv.setText("선택된 사진 파일 경로 : " + picFileUrlStr);
    }
}

 

수신측 코드

private String mResultPicFileUrl = "/data/pics/a.png";
// 원래는 이게 선택되어야하는 경로이다. (임의로 하드코딩)

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_b);
    
    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    String picUrl = bundle.getString("PIC_URL");
    
    TextView loadPicUrlTextView = (TextView)findViewById(R.id.received_pic_folder_url);
    String picurlStr = "전달받은 사진 폴더 : " + picurl;
    loadPicUrlTextView.setText(picurlStr);
}

public void onClick(View v) {
	Intent intent = new Intent();
    intent.putExtra("RESULT_PIC_FILE_URL", mResultPicFileUrl);
    
    // 정상적이면 OK, 아니면 CANCELED (System 내부적으로 정의되었다.)
    setResult(RESULT_OK, intent);
    finish();
}

 

 


Request Code

여러가지 동작을 하나의 Activity에 요청해야하는 상황일 때 어떻게할까? 어떤 동작에 대한 결과값이 돌아온건지 구분할 방법이 없다는 것이다. 이때 사용하는 것이 Request Code이다.

 

public static final int REQUEST_VIDEO_FILE_URL = 1; // 당연히 미리 선언해야한다.

startActivityForResult(..., REQUEST_VIDEO_FILE_URL);
startActivityForResult(..., REQUEST_PIC_FILE_URL);

이후 결과값을 받게되면 onActivityResult 함수의 인자 중에서 requestCode에 startActivityForResult 호출 당시에 전달한 두 번째 인자를 전달받게 된다.

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함