안드로이드 With Java #11 Intent 실습
이전에 사용하던 프로젝트에서 intent.putExtra()
메소드 부분을 추가해서 5
라는 숫자 값을 Intent
로 넘겨본다.
putExtra()
메소드는 반드시 startActivity()
이전에 수행되어야 한다.
SecondActivity
에서는 getIntent()
메소드를 통하여 인텐트를 생성하고 intent.getIntExtra()
메소드를 이용하여 값을 받을 수 있다.
받은 값을 로그로 출력해보는데, int
형을 Log.d()
메소드를 이용하여 출력할 때 String
으로 바꿔주어야 한다.
그래서 String.valueOf()
메소드를 이용했다. 단, ""+receivedNumber
이렇게 해도 +
연산자의 concat기능을 이용하여 형변환은 된다.
암시적 Intent는 어플리케이션 밖의 영역에 무언가 요청을 보낼 때 많이 사용된다. 주로 다른 앱에 요청을 보내거나 시스템에 요청을 보내게 된다.
위는 ACTION_VIEW
라는 액션을 Intent
에 주입하여 암시적 Intent를 사용한 예제이다.
위의 결과는 다음과 같다.
Intent에서 추출된 결과 값을 이용하기 위해서는
startActivityForResult()
메소드를 이용해야 한다. onActivityResult()
메소드를 오버라이드하여 다른 Intent로부터 결과를 받았을 때 수행할 동작을 입력하면 된다.MainActivity
가 startActivityForResult()
메소드를 통하여 SecondActivity
를 호출한다.호출 시에는 어떤 MainActivity에서 Intent를 호출했는지 구분하기 위한 코드인 REQUEST_CODE도 함께 준다.
SecondActivity
에서는 동작을 마친 후에 새로운 Intent
를 생성하고 Intent
에 setResult()
메소드를 통해 resultCode
와 data
(intent)를 넣는다.SecondActivity
는 finish()
메소드를 통하여 종료시킨다.MainActivity
는 오버라이드한 onActivityResult()
메소드를 통하여 requestCode
, resultCode
에 대한 검증을 하고 해당하는 작업을 수행한다.SecondActivity
를 startActivityForResult()
메소드를 통하여 호출
결과를 받아서 요청한 코드인 requestCode
가 미리 지정한 REQUEST_CODE
가 맞고 반환된 코드인 resultCode
가 200
(성공코드)이 맞다면 로그에 결과를 출력
새 Intent
를 생성하고 setResult()
메소드를 통하여 Intent
에 성공
이라는 문자열과 200
의 resultCode
를 함께 담음
그리고 finish()
메소드를 이용하여 종료
로그에 성공
이라는 문자열이 잘 찍혀서 나옴