안규 공부방

Android > Activity 화면간 이동시 데이터 전달 (startActivityForResult)

등록일 : 2017-07-05 11:12 조회수 : 94,147

우선 activity1 액티비티와 activity2 액티비티가 있다고 가정한다.

동작은 activity1 에서 activity2로 이동한 후 다시 activity2에서 activity1로 이동하며 데이터를 넘기는 것이다.

1. intent를 사용해 activity2 액티비티로 넘어감
 
		public static final int REQUEST_CODE = 1001;

		......

		Intent intent = new Intent(getBaseContext(), activity2.class);	// activity2로 이동하는 intent 생성

		 //intent 정보를 startActivityForResult에 실어 보냄(첫번째 파라미터는 intent, 두번째 , 데이터를 구분할 구분자값)
		startActivityForResult(intent,REQUEST_CODE); 	

2. activity2 액티비티에서 작업을 끝낸 후 activity1 액티비티에 값을 전달하고 finish() 시킴
 

		Intent myIntent1 = new Intent();
		myIntent1.putExtra("name", "mike");
		setResult(1, myIntent1);
		finish();



name:mike 값을 activity1 으로 넘김
activity1 에서 (onActivityResult) resultCode 값 1을 받음.

3. activity1 액티비티에서 activity2 액티비티에서 보낸 값을 받아 사용하기 위해 onActivityResult 메서드 구현
 

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		
		Toast.makeText(getBaseContext(), "request code : "+requestCode,Toast.LENGTH_SHORT).show();
		
		if(requestCode == REQUEST_CODE)
		{
			Toast.makeText(getBaseContext(), "On ActivityResult called with code : "+resultCode , Toast.LENGTH_LONG).show();
		}
		
		if(resultCode ==1)
		{
			String name = data.getStringExtra("name");
			Toast.makeText(getBaseContext(), "result name : "+name,Toast.LENGTH_LONG).show();			
		}
		
	}

 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.