코린이 탈출기
chapter 5.7 - 다른 화면을 통해 데이터 받아오기 (3) - Intent 응용 / A 화면에 데이터 대입 본문
chapter 5.7 - 다른 화면을 통해 데이터 받아오기 (3) - Intent 응용 / A 화면에 데이터 대입
50HEE 2021. 5. 4. 19:35chapter 5.6 - 다른 화면을 통해 데이터 받아오기 - Intent 응용 (2) / B -> A ( 데이터 입력 완료 후 A 화면
2021.05.03 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 5.5 - 다른 화면을 통해 데이터 받아오기 - Intent 응용 (1) / A -> B (데이터 조회) B (데이터 조회)" data-og..
sohee0428.tistory.com
이전 발행 글에서 B 화면에 새 닉네임을 입력하였습니다.
이어서 마지막으로 A 화면으로 돌아가 입력한 데이터를 대입하는 방법을 알아보겠습니다.
MainActivity를 A 화면으로 EditNicknameActivity를 B화면으로 부르겠습니다.
코드를 작성하는 곳은 MainActivity.kt 입니다.

B 화면에 입력한 새 닉네임을 이제 A 화면으로 넘어와서 대입해주어야 합니다.
이때 처음으로 들어보는 오버라이딩이라는 것을 사용할 것입니다.
오버라이딩은 상속과 관련되어있습니다.
간단하게 설명을 하면 기존에 만들어진 함수를 재활용한다고 생각하시면 됩니다.
자세하게는 차후에 설명하겠습니다.
28번 줄처럼 override fun onActivityResult만 입력하면 28~29번 줄처럼 작성됩니다.
이때 작성하는 위치는 override fun onCreate~ 밖에 작성하여야 합니다.
onActivityResult는 B 화면에서 새 닉네임을 입력한 후 입력 완료 버튼을 누르면 A 화면으로 넘어가서 실행할 코드를 작성하는 곳입니다.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
이 함수의 실행 시점은 startActivityResult로 호출된 화면이 종료되면 무조건 실행됩니다.
실행할 때 3가지 정보를 가지고 실행하는데 이 3가지 정보는 onActivityResult( ) 안에 설명되어 있습니다.
requestCode는 어떤 정보를 가져온 것인지를 확인합니다.
이는 A 화면에서 가져올 데이터를 구별하기 위해 멤버 변수로 설정하였습니다.
이번 코드에서는 닉네임 변경을 위한 숫자를 설정한 것입니다. ( REQUEST_FOR_NICKNAME = 1004 )
즉, startActivityForResult에 입력한 값과 같은지를 비교하기 위해 작성합니다.
resultCode는 OK 버튼을 누른 것이 맞는지를 구별하는 용도로 사용합니다.
OK 버튼이 아닌 취소(뒤로 가기) 버튼이 아닌지 이것을 구별하기 위해 작성합니다. (RESULT_OK 가 맞는지 확인)
data는 B 화면에 데이터를 data라는 이름에 담기도록 처리합니다.
복귀용 Intent를 가지고 있는 변수가 맞는지를 확인합니다.
다시 코드를 보면 우선 requestCode를 확인하기 위해 if문을 사용하였습니다. 33번 줄과 같습니다.
if ( requestCode == 데이터) { }
requestCode를 확인하고 나서 확인 버튼을 누른 것이 맞는지를 확인합니다.
이때도 if문을 사용하였습니다. 37번 줄과 같습니다.
if ( resultCode == Activity.RESULT_OK) { }
이제 B 화면에서 가져온 새 닉네임을 텍스트뷰에 반영할 차려입니다.
데이터를 꺼내는 방법은 get타입Extra 입니다. 41번 줄을 보면 변수를 설정하여 데이터를 불러옵니다.
불러올 데이터의 이름표도 같이 작성합니다.
val 변수 이름1 = data?.get타입Extra("데이터 이름표")
마지막으로 변수로 설정한 데이터를 대입해줍니다. 43번 줄처럼 text를 이용해줍니다.
데이터를 대입할 텍스트.text = 변수 이름1
이렇게 3개의 챕터로 나누어 데이터를 이동하는 것을 해보았습니다.
앞서 말했다시피 기존 Intent보다 복잡하여 사용할 상황이 맞는 것인지를 잘 파악하여 사용하는 것이 중요합니다.
<코드 정리>
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if ( requestCode == 데이터) {
if ( resultCode == Activity.RESULT_OK) {
val 변수 이름1 = data?.get타입Extra("데이터 이름표")
데이터를 대입할 텍스트.text = 변수 이름1
} } }
'인터넷 강의 > 클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기' 카테고리의 다른 글
| chapter 6.1 - 리스트뷰 - 개념에 대한 소개 (0) | 2021.05.06 |
|---|---|
| chapter 5.8 - 안드로이드가 제공하는 화면 활용 - Intent 활용 (DIAL, CALL, SENDTO, VIEW) (0) | 2021.05.05 |
| chapter 5.6 - 다른 화면을 통해 데이터 받아오기 (2) - Intent 응용 / B -> A ( 데이터 입력 완료 후 A 화면으로 복귀하기 ) (0) | 2021.05.04 |
| chapter 5.5 - 다른 화면을 통해 데이터 받아오기 (1) - Intent 응용 / A -> B (데이터 조회) (0) | 2021.05.03 |
| chapter 5.4 - 화면 간 데이터 전달 - Intent 활용 (0) | 2021.05.03 |