쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코틀린
  • Kotlin
  • 백준
  • 프로젝트회고
  • 코테
  • workmanager
  • 코틀린코테
  • ViewModel
  • mvvm
  • livedata
  • DataBinding
  • 기초100제
  • 배열
  • 상속
  • Room
  • AAC
  • 리사이클러뷰
  • 컴포즈
  • 변수
  • 자료구조
  • 코드업100제
  • 객체지향
  • compose
  • Adapter
  • 코딩테스트
  • 메소드
  • Android
  • 알고리즘
  • Jetpack
  • 자바

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

Android/Basic

[Android] Intent - Activity 간 데이터 전달

2022. 5. 3. 23:59

Intent ? 

인텐트는 기본적으로 액티비티간 이동을 도와준다.

하지만 여기서 끝나는 것이 아닌 Extra 데이터를 담을 수 있는 공간을 가지고 있어 데이터 전달이 필요할 때 intent를 사용할 수 있다.

 

회원가입에서 여러 가지 뷰를 이동하면서 데이터를 이동할 때 사용할 수 있다.

다음 예시를 살펴보자!

 

1. 다음 뷰로 전화번호 데이터 전달하기.

val intent = Intent(this, CreateAccountActivity::class.java)
intent.putExtra("pnum", sbinding.signupingPnum.text.toString())
startActivity(intent)

회원가입 단계 중 

전화번호를 입력한 뒤 인증에 성공하면 아이디, 비밀번호, 닉네임을 입력하는 뷰가 나온다.

이 때 핸드폰 번호를 마지막 회원가입 뷰에서도 가지고 있어야 서버에 안정적으로 전달할 수 있을 것이다.

 

따라서 인증번호를 성공한 후 다음 버튼을 클릭할 때 위와 같이

intent.putExtra로 해당 핸드폰번호의 값을 다음 액티비티로 전달할 수 있다.

 

2. 받은 전화번호 정보 및 닉네임, 아이디, 비밀번호를 다음 뷰로 전달하기

var pnum: String = intent.getStringExtra("pnum").toString()
val createAccountData = CreateAccountData(binding.createAccountIdEdittext.text.toString(),
    binding.createAccountPasswordEdittext.text.toString(), binding.createAccountNicknameEdittext.text.toString(),
pnum)
val intent =Intent(this, SelectDestActivity::class.java)
intent.putExtra("createAccountKey", createAccountData)
startActivity(intent)

먼저 intent.getStringExtra로 받은 핸드폰 번호를 다른 변수에 지정한다음(다음 뷰로 넘기기 위한 작업)

이번에는 많은 데이터를 담아야 하므로 데이터 클래스를 만들어준다.

data class CreateAccountData (
    var idText:String,
    var pwText:String,
    var nicknameText:String,
    var pNumText:String
    ) : Serializable

데이터클래스에 해당 데이터들을 모두 담고 또 다른 변수에 지정한 다음

회원가입의 다음 뷰로 또 다시 intent로 전달한다.

 

3. 데이터 클래스로 받은 데이터 전체를 받은 후 최종 뷰로 전달하기

val data = intent.getSerializableExtra("createAccountKey") as CreateAccountData
val selectDestData = SelectDestData(
    data.idText, data.pwText,
    data.nicknameText, data.pNumText, selectDestArray)

val intent =Intent(this, SelectThemeActivity::class.java)
intent.putExtra("selectDestKey", selectDestData)
startActivity(intent)
data class SelectDestData (
    var idText:String,
    var pwText:String,
    var nicknameText:String,
    var pNumText:String,
    var destArray:ArrayList<String>
    ) : Serializable

위에서 CreateAccountData를 받은 후 변수에 저장한 다음,

또 다른 데이터 클래스를 생성하여 데이터를 추가해서 회원가입의 마지막 뷰로 전달한다.

 

4. 마지막 뷰에서 받은 데이터를 서버로 회원가입 요청하기

val data = intent.getSerializableExtra("selectDestKey") as SelectDestData
val requestUserData = RequestUserData(
    data.idText,
    data.pwText,
    data.nicknameText,
    data.pNumText,
    data.destArray,
    selectThemeArray
)

val call: Call<ResponseUserData> = ServiceCreator.signUpService.postSignUp(requestUserData)

이렇게 회원가입에 필요한 모든 데이터를 마지막 뷰에서 받고 서버에 요청하면 끝!!!

저작자표시 (새창열림)

'Android > Basic' 카테고리의 다른 글

[Android] Data Binding(데이터 바인딩)  (0) 2022.05.08
[Android] 이미지 앞으로 끌어오기 bringToFront()  (0) 2022.05.01
[Android] RecyclerView 적용  (0) 2022.04.30
[Android] RecyclerView (2)  (0) 2022.04.29
[Android] RecyclerView  (0) 2022.04.28
    'Android/Basic' 카테고리의 다른 글
    • [Android] Data Binding(데이터 바인딩)
    • [Android] 이미지 앞으로 끌어오기 bringToFront()
    • [Android] RecyclerView 적용
    • [Android] RecyclerView (2)
    쏭식
    쏭식

    티스토리툴바