안드로이드 스튜디오를 활용해 간단한 자기소개앱을 만들어 보겠습니다. 😆
또한, 로그인 페이지에서 아이디와 비밀번호를 입력하여 값을 넘겨주고, 자기소개 페이지에서 불러오는 로직도 추가로 구현하는 것을 목표로 합니다.
package com.example.signinactivity
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
class SignInActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
val login = findViewById<Button>(R.id.btn_login)
val join = findViewById<Button>(R.id.btn_join)
val idText = findViewById<EditText>(R.id.idText)
val pwText = findViewById<EditText>(R.id.pwText)
val intent = Intent(this,HomeActivity::class.java)
intent.putExtra("name", "value")
intent.putExtra("id", "value")
startActivity(intent)
// 로그인
login.setOnClickListener {
val inputId = idText.text.toString()
val inputPw = pwText.text.toString()
checkToast(this, inputId, inputPw)
}
// 회원가입
join.setOnClickListener {
join()
}
}
// 토스트 메세지
private fun showToast(context: Context, message: String) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
// 아이디 or 비밀번호 중 하나라도 입력받지 못했을 때
private fun checkToast(context: Context, inputId: String, inputPw: String) {
val trimmedId = inputId.trim()
val trimmedPw = inputPw.trim()
if (trimmedId.isEmpty() || trimmedPw.isEmpty()) {
showToast(this, "아이디/비밀번호를 확인해주세요.")
} else {
showToast(context, "로그인 성공!")
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}
}
// 회원가입으로 넘어가는 버튼
private fun join() {
val intent = Intent(this,SignUpActivity::class.java)
startActivity(intent)
}
}
'override fun onCreate'함수는 'AppCompatActivity'클래스의 생명을 주는 메서드 중 하나로, 안드로이드 액티비티의 진입점 역할을 합니다! 따라서 'onCreate'함수는 Java의 'main'메서드나 Kotlin의 'fun main()' 함수와 유사한 역할을 수행합니다.
'onCreate' 함수는 액티비티가 생성되면 최초에 실행되는 함수로 액티비티의 초기화 작업이나 레이아웃 설정 등을 수행하고, 가장 처음에 호출되는 함수입니다.
(초기화 작업, 필요한 동작 등의 코드를 작성)
그러나 차이점으로는 'onCreate'함수는 액티비티의 생명주기와 관련하여 특정한 목적으로 사용되는 반면에 'main' 함수는 어플리케이션 전체를 시작하는 역할을 합니다.
처음에 Toast 메세지를 띄울 부분의 코드를 작성하는데 계속해서 오류가 났습니다. 이유를 찾아보니 'onCreate'함수는 사용자가 정의하는 함수가 아닌 프레임워크에서 상속한 메서드이므로, 기능을 확장하거나 커스터마이징을 하기 위해서는 외부로 빼주는 것이 좋다고 합니다.
클래스가 커지고 코드가 복잡해질수록 onCreate 함수 내부에 작성된 코드는 쉽게 무시되거나 분석하기 어려울 수 있습니다. 하지만 외부로 빼주면 해당 액티비티의 생성 로직이 명확하게 드러나며, 코드의 유지보수가 쉬워진다고 합니다.
package com.example.signinactivity
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
class SignUpActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign_up)
val name = findViewById<EditText>(R.id.editName)
val idText = findViewById<EditText>(R.id.editId)
val pwText = findViewById<EditText>(R.id.editPw)
val join = findViewById<Button>(R.id.btn_join)
// 회원가입
join.setOnClickListener {
val inputName = name.text.toString()
val inputId = idText.text.toString()
val inputPw = pwText.text.toString()
checkToast(this, inputName, inputId, inputPw)
}
}
// 토스트 메세지 띄우기
private fun showToast(context: Context, message: String) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}
// 이름 or 아이디 or 비밀번호 중 하나라도 입력받지 못했을 때
private fun checkToast(context: Context, inputName: String, inputId: String, inputPw: String) {
val trimmedName = inputName.trim()
val trimmedId = inputId.trim()
val trimmedPw = inputPw.trim()
if (trimmedName.isEmpty() || trimmedId.isEmpty() || trimmedPw.isEmpty()) {
showToast(this, "입력되지 않은 정보가 있습니다.")
} else {
val intent = Intent(this,SignInActivity::class.java)
startActivity(intent)
finish()
}
}
}
문제점 :
원인 :
해결책 :
느낀점 :
어떻게 구현하고 작동하는지 잘 설명해주셔서 이해가 쉽게 되었습니다! 잘보고 갑니다~~~