안드로이드 With Java #11 Intent 실습 (데이터 전달, 암시적 인텐트)

Jake Seo·2020년 8월 6일
1

안드로이드 With Java

목록 보기
11/31

안드로이드 With Java #11 Intent 실습

Intent를 이용하여 데이터 전달해보기

이전에 사용하던 프로젝트에서 intent.putExtra() 메소드 부분을 추가해서 5라는 숫자 값을 Intent로 넘겨본다.

putExtra() 메소드는 반드시 startActivity()이전에 수행되어야 한다.

SecondActivity에서는 getIntent() 메소드를 통하여 인텐트를 생성하고 intent.getIntExtra() 메소드를 이용하여 값을 받을 수 있다.

받은 값을 로그로 출력해보는데, int형을 Log.d() 메소드를 이용하여 출력할 때 String으로 바꿔주어야 한다.

그래서 String.valueOf()메소드를 이용했다. 단, ""+receivedNumber 이렇게 해도 +연산자의 concat기능을 이용하여 형변환은 된다.

암시적 Intent 사용해보기

암시적 Intent는 어플리케이션 밖의 영역에 무언가 요청을 보낼 때 많이 사용된다. 주로 다른 앱에 요청을 보내거나 시스템에 요청을 보내게 된다.

위는 ACTION_VIEW라는 액션을 Intent에 주입하여 암시적 Intent를 사용한 예제이다.

위의 결과는 다음과 같다.

Intent에서 결과값 받아보기

Intent에서 추출된 결과 값을 이용하기 위해서는

  1. Intent 시작 시에 startActivityForResult() 메소드를 이용해야 한다.
  2. onActivityResult() 메소드를 오버라이드하여 다른 Intent로부터 결과를 받았을 때 수행할 동작을 입력하면 된다.

Intent 전달 및 수신 프로세스

  1. MainActivitystartActivityForResult() 메소드를 통하여 SecondActivity를 호출한다.

    호출 시에는 어떤 MainActivity에서 Intent를 호출했는지 구분하기 위한 코드인 REQUEST_CODE도 함께 준다.

  2. 호출된 SecondActivity에서는 동작을 마친 후에 새로운 Intent를 생성하고 IntentsetResult() 메소드를 통해 resultCodedata(intent)를 넣는다.
  3. SecondActivityfinish() 메소드를 통하여 종료시킨다.
  4. MainActivity는 오버라이드한 onActivityResult() 메소드를 통하여 requestCode, resultCode에 대한 검증을 하고 해당하는 작업을 수행한다.

소스코드 작성

MainActivity의 onCreate() 메소드

SecondActivitystartActivityForResult()메소드를 통하여 호출

MainActivity의 onActivityResult() 메소드

결과를 받아서 요청한 코드인 requestCode가 미리 지정한 REQUEST_CODE가 맞고 반환된 코드인 resultCode200(성공코드)이 맞다면 로그에 결과를 출력

SecondActivity의 onCreate() 메소드

Intent를 생성하고 setResult() 메소드를 통하여 Intent성공이라는 문자열과 200resultCode를 함께 담음

그리고 finish() 메소드를 이용하여 종료

결과 확인

로그에 성공이라는 문자열이 잘 찍혀서 나옴

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글