코린이 탈출기

chapter 5.4 - 화면 간 데이터 전달 - Intent 활용 본문

인터넷 강의/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기

chapter 5.4 - 화면 간 데이터 전달 - Intent 활용

50HEE 2021. 5. 3. 18:25

단순히 이동만 하는 것이 아니라 화면을 넘어갈 때 데이터들을 같이 첨부해서 보내주는 방법입니다.

 

우선 설명을 위해 메시지를 보내는 화면(MainActivity)을 A 화면으로 메시지를 받는 화면(MessageActivity)을 B화면으로 부르겠습니다.

 

 

 

A 화면의 xml을 설정하겠습니다.

A화면 xml

B화면의 xml을 설정하겠습니다.

B화면 xml

 

 

 

A 화면에 입력한 내용을 보내는 코드를 작성하겠습니다.

작성된 코드를 먼저 보여드린 후에 설명을 하겠습니다.

코드 작성하는 곳은 MainActivity.kt로 이동하겠습니다.

 

쉽게 이동하는 방법은 CTRL을 누른 후에 원하는 변수 / 클래스 / xml을 누르면 해당 부분이 만들어진 곳으로 이동할 수 있습니다.

해당 xml의 코틀린 파일은 context에 표기되어 있어서 CTRL을 누르고 MainActivity를 누르면 MainActivity.kt로 이동합니다.

CTRL + 변수 / 클래스 / XML  - 이동하기

 

 

A화면 코드

이해하기 쉽게 여행을 가기 위해 비행기를 타는 방법을 빗대어 설명하겠습니다.

 

15번 줄에 버튼을 누르면 메시지를 보내기 위해 setOnClickListener을 설정합니다.

버튼 이름.setOnClickListener { }

 

이제 버튼을 눌러 입력한 내용을 다른 화면으로 보내기 위한 코드를 작성해보겠습니다.

여행을 가기 전에 필요한 짐을 싸듯 원하는 데이터를 보내기 위해 변수를 설정하겠습니다.

입력한 내용을 보내기 위해서 18번 줄처럼 변수에 원하는 변수 이름을 설정한 후 입력한 내용에 text를 사용합니다.

val 변수 이름1 = 입력한 내용의 id.text.to타입()

 

2021.04.22 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 4.1 - 코틀린으로 UI 속성 변경해 보기 - Text

 

 

짐을 쌌으면 이제 비행기 티켓을 발권해보겠습니다.

비행기 티켓 발권은 21번 줄처럼 Intent를 사용하여 도착지를 설정해 줍니다.

val 변수 이름2 = Intent(출발지, 도착 액티비티::class.java)

 

비행기 티켓 발권이 끝났으면 이제 수화물을 첨부해야 합니다.

24번 줄처럼 원하는 내용을 보내기 위해서는 putExtra를 사용합니다.

수화물을 붙일 때에는 나의 짐인 것을 확인하기 위해 이름표를 붙입니다.

그와 유사하게 입력한 내용의 이름을 붙여주고 그 내용이 어떤 변수인지를 표시해줍니다. 

변수 이름2.putExtra("수화물 이름표", 실제 보내줄 변수 또는 값)

다르게 표현하면

변수 이름2.putExtra("데이터 이름표", 변수 이름1)

 

마지막으로 여행을 시작하기 위해 비행기가 출발합니다.

27번 줄처럼 실제 출발지를 입력합니다.

'변수 이름2'에 출발지와 도착지를 명시하였기 때문에 변수 이름2를 입력하면 됩니다.

startActivity(변수 이름2)

 

 

 

작성을 다 하고 버튼을 누르면 다른 화면으로 이동은 하지만 아직 입력한 내용이 대입되는 것은 아닙니다.

입력한 내용을 대입하기 위해서는 입력한 내용을 띄울 화면으로 넘어가야 합니다.

 

 

 

<코드 정리>

버튼 이름.setOnClickListener { 

val 변수 이름1 = 입력한 내용의 id.text.to타입()

val 변수 이름2 = Intent(출발지, 도착 액티비티::class.java)

변수 이름2.putExtra("데이터 이름표", 변수 이름1)

startActivity(변수 이름2)

}

 

 

 

코드 작성하는 곳은 MessageActivity.kt로 이동하겠습니다.

context에 표기되어 있는 것을 CTRL을 누르고 MessageActivity를 누르면 MessageActivity.kt로 이동합니다.

CTRL + 변수 / 클래스 / XML  - 이동하기

 

 

B화면 코드

위에서 붙인 수화물을 찾아오겠습니다.

화면을 넘어올 때 수화물을 확인하기 위한 변수를 하나 만듭니다.

즉, 이름표를 작성한 수화물을 타입에 맞게 꺼내기 위한 변수를 만들어 줍니다.

여기서 타입은 String을 말합니다. 그러기 위해서 티켓을 확인하는데 이때 intent를 이용합니다.

수화물을 가져오기 위해 get타입Extra를 입력하여 꺼내올 수화물의 이름표 즉, 입력한 내용의 이름표를 입력합니다.

작성한 코드는 15번 줄과 같습니다. 

val 변수 이름3 = intent.get타입Extra("데이터 이름표")

 

마지막으로 받은 데이터를 넘어온 화면에 적용하는 것입니다.

받을 화면에 어떤 데이터를 받을지를 작성하면 됩니다. 작성한 코드는 17번 줄과 같습니다.

받을 화면의 텍스트.text = 변수 이름3

 

 

 

<코드 정리>

val 변수 이름3 = intent.get타입Extra("데이터 이름표")

받을 화면의 텍스트.text = 변수 이름3

Comments