코린이 탈출기
chapter 5.6 - 다른 화면을 통해 데이터 받아오기 (2) - Intent 응용 / B -> A ( 데이터 입력 완료 후 A 화면으로 복귀하기 ) 본문
chapter 5.6 - 다른 화면을 통해 데이터 받아오기 (2) - Intent 응용 / B -> A ( 데이터 입력 완료 후 A 화면으로 복귀하기 )
50HEE 2021. 5. 4. 18:21chapter 5.5 - 다른 화면을 통해 데이터 받아오기 - Intent 응용 (1) / A -> B (데이터 조회)
기존의 Intent는 A 화면에서 B화면으로 이동하는 것만 다루었습니다. 이번에는 A화면을 통해 데이터를 조회하고 B화면을 통해 데이터를 입력하고 확인 후 다시 A 화면으로 돌아가서 입력한 값을 반
sohee0428.tistory.com
이전 발행 글에서 A 화면에서 B 화면으로 이동하였습니다.
이어서 B 화면에 데이터를 입력하고 확인 버튼을 눌러 다시 A 화면으로 넘어가는 방법을 보겠습니다.
MainActivity를 A 화면으로 EditNicknameActivity를 B화면으로 부르겠습니다.
코드를 작성하는 곳은 EditNicknameActivity.kt 입니다.

A 화면에서 B 화면으로 넘어와 이제 데이터를 입력할 차례입니다.
B 화면에 새 닉네임을 입력한 후 입력 완료 버튼을 눌렀을 때 실행할 코드를 작성할 차례입니다. 14번 줄과 같습니다.
버튼 이름.setOnClickListener { }
입력한 새 닉네임을 변수로 저장하여 조회하겠습니다. 나중에 값을 반영하기 위해 text를 이용합니다. 18번 줄과 같습니다.
val 변수 이름1 = 입력한 내용의 id.text.to타입()
2021.04.22 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 4.1 - 코틀린으로 UI 속성 변경해 보기 - Text
이제 새로 입력한 닉네임을 가지고 다시 A 화면으로 복귀해야 할 차례입니다.
데이터를 가져오기 위해 Intent를 이용합니다. 이때 사용하는 Intent는 결과 데이터를 들고 가기 위해 비어있게 만들어 사용합니다.
기존의 Intent의 경우 출발지와 도착 액티비티를 설정하였습니다.
하지만 A 화면에서 코딩 당시 startActivity가 아닌 startActivityForResult를 이용하였습니다.
예를 들면 startActivity는 편도 항공 티켓이라고 하면 startActivityForResult는 왕복 항공 티켓이기 때문에 B 화면에 사용할 Intent에는 따로 또 적을 필요가 없다고 생각하면 됩니다.
그리하여 비어있는 Intent를 작성해 줍니다. 25번 줄과 같습니다.
val 변수 이름2 = Intent()
이제 티켓을 만들었다면 이제 수화물을 붙일 차례입니다.
수화물을 붙이는 방법은 기존과 동일하게 putExtra를 사용하고, 이름표와 짐을 입력해주는 것은 동일합니다.
변수 이름2.putExtra("데이터 이름표", 변수 이름1)
이제 확인 버튼을 눌러 다시 A 화면으로 돌아가면 됩니다.
하지만 B 화면에는 확인 버튼과 취소(뒤로 가기) 버튼이 있어 구별해주어야 합니다.
즉, 확인 버튼의 이벤트 처리에서 '입력 완료' 버튼을 눌렀다고 세팅을 하고 들고 갈 데이터도 같이 세팅해야 합니다.
입력한 데이터를 받아서 빈 Intent를 이용해 담아서 확인 버튼을 누른 게 맞고, 결과 데이터를 들고 가기 위한 빈 Intent를 이용하였다는 것을 확인해야 합니다.
이때 사용하는 것이 setResult 입니다. 29번 줄처럼 setResult를 사용하여 OK 버튼과 설정한 변수를 넣어줍니다.
OK 버튼은 자동 완성되어 RESULT_OK만 작성하여도 알아서 Activity가 작성됩니다.
setResult(Activity.RESULT_OK, 변수 이름2)
이제 마무리로 다시 A 화면으로 돌아갈 차례입니다.
이제 B 화면은 끝난 것으로 닫아야 하기 때문에 finish를 사용합니다. 31번 줄과 같습니다.
finish()
마지막으로 다음 챕터를 통해 A 화면으로 넘어가서 변경한 새 닉네임을 대입하겠습니다.
<코드 정리>
버튼 이름.setOnClickListener {
val 변수 이름1 = 입력한 내용의 id.text.to타입()
val 변수 이름2 = Intent()
변수 이름2.putExtra("데이터 이름표", 변수 이름1)
setResult(Activity.RESULT_OK, 변수 이름2)
finish()
}
'인터넷 강의 > 클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기' 카테고리의 다른 글
| chapter 5.8 - 안드로이드가 제공하는 화면 활용 - Intent 활용 (DIAL, CALL, SENDTO, VIEW) (0) | 2021.05.05 |
|---|---|
| chapter 5.7 - 다른 화면을 통해 데이터 받아오기 (3) - Intent 응용 / A 화면에 데이터 대입 (0) | 2021.05.04 |
| chapter 5.5 - 다른 화면을 통해 데이터 받아오기 (1) - Intent 응용 / A -> B (데이터 조회) (0) | 2021.05.03 |
| chapter 5.4 - 화면 간 데이터 전달 - Intent 활용 (0) | 2021.05.03 |
| chapter 5.3 - 여러 화면 활용하기 - Intent(화면 전환) (0) | 2021.04.29 |