회원가입을 하는 화면에서 회원가입 버튼을 클릭시 로그인 화면으로 넘어갈 때 데이터를 전달해 줄 수 있는 registerForActivityResult를 사용해 보자
로그인화면
SignInActivity.kt
class SignInActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val et_login = findViewById<EditText>(R.id.et_login)
val btn_join = findViewById<Button>(R.id.btn_join)
val signUpActivityLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == RESULT_OK) {
val data: Intent? = it.data
val subIdTextValue = data?.getStringExtra("id")
val subPwTextValue = data?.getStringExtra("pw")
subIdTextValue?.let {
et_login.setText(it)
}
subPwTextValue.let {
et_pw.setText(it)
}
}
}
btn_join.setOnClickListener {
val intent = Intent(this, SignUpActivity::class.java)
signUpActivityLauncher.launch(intent)
}
}
}
registerForActivityResult 메서드를 사용해서 ActivityLauncher를 만든다.
조건문이 만족하면 "id" 와 "pw"를 받아와서 editText인 et_login 과 et_pw에
setText로 값을 전달받아 넣어준다.
signUpActivityLauncher.launch(intent)를 통해 데이터를 받아올 signUpActivity를 실행했다.
회원가입화면
SignUpAcitivity.kt
class SignUpActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign_up)
var btn_join2 = findViewById<Button>(R.id.btn_join2)
var et_name = findViewById<EditText>(R.id.et_name)
var et_id2 = findViewById<EditText>(R.id.et_id2)
var et_pw2 = findViewById<EditText>(R.id.et_pw2)
btn_join2.setOnClickListener {
if (et_name.text.toString().trim().isEmpty() || et_id2.text.toString().trim()
.isEmpty() || et_pw2.text.toString().trim().isEmpty()) {
Toast.makeText(this, "입력되지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show()
} else {
val intent = Intent(this, SignInActivity::class.java).apply {
putExtra("id", et_id2.text.toString())
putExtra("pw", et_pw2.text.toString())
}
setResult(RESULT_OK, intent)
finish()
}
}
}
}
회원가입 버튼을 누르면 if문을 넣어서 editText 3개의 값 중 한개라도 채워지지 않으면 Toast 알림창만을 띄우며 모든 값을 채워넣고 버튼을 누르면 putExtra에 아이디 패스워드를 입력받아 setResult 결과 값을 전달한다. 그럼 로그인 화면에서는 name "id", "pw"로 전달받은 값을 수신하게 된다.
다양한 사용방법에 익숙해지도록 열심히 공부해야겠다.
개발자로서 배울 점이 많은 글이었습니다. 감사합니다.