실행 순서
1. 로그인 화면에서 회원가입 버튼을 클릭한다.
2. 회원가입 화면에서 이름, 아이디, 비밀번호를 입력 한 후 회원가입 버튼을 클릭한다.
3. 로그인 화면으로 돌아올 때 아이디, 비밀번호가 자동으로 입력 된다.
ActivityResultLauncher
를 반환한다.private lateinit var activityResultLauncher: ActivityResultLauncher<Intent>
getStringExtra
로 받는다.💡 registerForActivityResult는
initialization, onAttach(), onCreate()
에 registerForActivityResult()를 호출해야 한다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign_in)
editId = findViewById(R.id.etSignInId)
editPwd = findViewById(R.id.etSignInPwd)
activityResultLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == RESULT_OK) {
val receiveId = result.data?.getStringExtra("idFromSignUpActivity") ?: ""
val receivePwd = result.data?.getStringExtra("pwdFromSignUpActivity") ?: ""
editId.setText(receiveId)
editPwd.setText(receivePwd)
}
}
}
fun doOnBtnClick(view: View) {
when (view.id) {
...
R.id.btnMoveSignUp -> {
val intent = Intent(this, SignUpActivity::class.java)
activityResultLauncher.launch(intent)
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign_up)
val btnSignUp = findViewById<Button>(R.id.btnSignUp)
btnSignUp.setOnClickListener {
val editName = findViewById<EditText>(R.id.etSignUpName)
val editId = findViewById<EditText>(R.id.etSignUpId)
val editPwd = findViewById<EditText>(R.id.etSignUpPwd)
if (editName.text.isEmpty() || editId.text.isEmpty() || editPwd.text.isEmpty()) {
Toast.makeText(this, "입력되지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show()
} else {
val intent = Intent(this, SignInActivity::class.java).apply {
putExtra("idFromSignUpActivity", editId.text.toString())
putExtra("pwdFromSignUpActivity", editPwd.text.toString())
}
// setResult 등록
setResult(RESULT_OK, intent)
if (!isFinishing) finish()
}
}
}