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 |