class SignInActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val et_pw = findViewById<EditText>(R.id.et_pw)
val btn_login = findViewById<Button>(R.id.btn_login)
val et_login = findViewById<EditText>(R.id.et_login)
val signUpActivityLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){result->
if(result.resultCode == RESULT_OK){
val data:Intent? = result.data
val subIdTextValue = data?.getStringExtra("id")
val subPwTextValue = data?.getStringExtra("pw")
subIdTextValue?.let{
et_login.setText(it)
}
subPwTextValue.let{
et_pw.setText(it)
}
}
}
btn_login.setOnClickListener {
if(!et_login.text.toString().trim().isEmpty() && !et_pw.text.toString().trim().isEmpty()){
Toast.makeText(this, "로그인 성공", Toast.LENGTH_SHORT).show()
val info_id = "아이디: " + et_login.text.toString()
val intent = Intent(this, HomeActivity::class.java)
intent.putExtra("info_id", info_id)
startActivity(intent)
}else{
Toast.makeText(this,"아이디/비밀번호를 확인해주세요.", Toast.LENGTH_SHORT).show()
}
}
val btn_join = findViewById<Button>(R.id.btn_join)
val intent = Intent(this, SignUpActivity::class.java)
btn_join.setOnClickListener {
signUpActivityLauncher.launch(intent)
}
}
}
회원가입 버튼을 누를경우 registerForActivityResult 를 사용하여 signUpActivityLauncher.launch(intent)로 회원가입 화면인 SignUpActivity로 이동하여 아이디와 패스워드를 입력받고 회원가입을 완료한 후 et_login, et_pw 로 선언한 EditText로 값을 넘겨받을 수 있도록 만들었다.
로그인 버튼을 누를 경우 EditText의 값이 둘 다 입력되어야 HomeActivity로 넘어가게 만들었으며 그렇지 않은 경우에는 Toast 팝업창으로 입력 값을 확인하도록 만들었다.
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()
}
}
}
}
회원가입 페이지도 조건문을 걸어서 입력 값이 한 곳이라도 비어있으면 Toast 팝업창을 띄워주었으며 그렇지 않은 경우에는 Intent 안에 있는 함수인 putExtra에 입력 값을 담아주고 setResult를 사용해서 값을 전달해주었다.
class HomeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
val info_id = intent.getStringExtra("info_id")
// intent.getStringExtra("전달했던 데이터의 이름표")
val imgView1 = findViewById<ImageView>(R.id.imgView1)
val tv_id = findViewById<TextView>(R.id.tv_id)
rollImg()
tv_id.text = info_id
val btn_exit = findViewById<Button>(R.id.btn_exit)
btn_exit.setOnClickListener {
finish()
}
}
fun rollImg(){
val imgView1 = findViewById<ImageView>(R.id.imgView1)
val random = Random
val image = random.nextInt(6)
val resultImage = when(image){
0 -> R.drawable.animal1
1 -> R.drawable.animal2
2 -> R.drawable.animal3
3 -> R.drawable.animal4
4 -> R.drawable.animal5
else -> R.drawable.animal6
}
// 이미지뷰 업데이트
imgView1.setImageResource(resultImage)
// contentDescription 업데이트
imgView1.contentDescription = image.toString()
}
}
로그인을 하면 뜨게되는 HomeActivity 이며 rollImg 함수를 만들어서 랜덤한 숫자를 받아오고
그 숫자에 맞는 조건문의 숫자로 들어가서 drawable에 저장해둔 이미지를 변수resultImage에 입력받아 그 이미지를 홈 화면이 켜질 때 리소스를 가져와 contentDescription으로 업데이트를 해주게 만들었다.
코드 깔끔하게 쓰시네요...! 많이 배우고 갑니다 ㅎㅎㅎ