이메일 화면 구현하기
2022. 12. 1. 11:27ㆍBasic
- LoginActivity.kt
package com.example.myapplication.ui.login
import android.app.Activity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import android.os.Bundle
import android.provider.ContactsContract.CommonDataKinds.Email
import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.core.widget.addTextChangedListener
import androidx.lifecycle.enableSavedStateHandles
import com.example.myapplication.databinding.ActivityLoginBinding
import com.example.myapplication.R
import com.google.android.gms.tasks.Task
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseAuthException
import com.google.firebase.auth.ktx.auth
import com.google.firebase.ktx.Firebase
class LoginActivity : AppCompatActivity() {
private lateinit var loginViewModel: LoginViewModel
private lateinit var binding: ActivityLoginBinding
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)
inintlogin()
initsignlogin()
initEmailAndPassword()
}
private fun inintlogin() {
binding.login.setOnClickListener {
val email = getInputEmail()
val password = getInputpassword()
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
finish()
} else {
Toast.makeText(this, "로그인에 실패햇습니다. 이메일또는 비밀번호를 확인해주세요", Toast.LENGTH_SHORT)
.show()
}
}
}
}
private fun initsignlogin() {
binding.signlogin.setOnClickListener({
val email = getInputEmail()
val password = getInputpassword()
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
Toast.makeText(this, "회원가입에 성공했습니다. 로그인 버튼을 눌러 로그인해주세요", Toast.LENGTH_SHORT)
.show()
} else {
Toast.makeText(this, "이미 가입한 이메일이거나, 회원가입에 실패햇습니다.", Toast.LENGTH_SHORT)
.show()
}
}
})
}
private fun initEmailAndPassword() {
binding.email.addTextChangedListener {
binding.login.isEnabled = binding.email.text.isNotEmpty() && binding.password.text.isNotEmpty()
}
binding.password.addTextChangedListener {
binding.login.isEnabled = binding.email.text.isNotEmpty() && binding.password.text.isNotEmpty()
}
}
private fun getInputEmail(): String {
return binding.username.text.toString()
}
private fun getInputpassword(): String {
return binding.password.text.toString()
}
}
- 액티비티 레이아웃
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".ui.login.LoginActivity">
<TextView
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="72dp"
android:text="@string/main_desc"
android:textSize="20dp"
app:layout_constraintBottom_toTopOf="@id/username"
tools:layout_editor_absoluteX="34dp"></TextView>
<EditText
android:id="@+id/email"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="112dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
app:layout_constraintTop_toBottomOf="@id/email">
</EditText>
<Button
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginTop="16dp"
android:layout_marginBottom="64dp"
android:enabled="false"
android:text="로그인"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password"
app:layout_constraintVertical_bias="0.2" />
<Button
android:id="@+id/signlogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:text="회원가입"
app:layout_constraintBottom_toBottomOf="@id/login"
app:layout_constraintEnd_toStartOf="@id/login"
app:layout_constraintTop_toBottomOf="@id/login"
app:layout_constraintTop_toTopOf="@id/login"
app:layout_constraintVertical_bias="1.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
- 앱 실행 화면
'Basic' 카테고리의 다른 글
안드로이드 - 컨텍스트 메뉴 사용 예제 (0) | 2022.12.08 |
---|---|
코틀린 안드로이드 - 계산기 /다이얼로그 만들어보기 (0) | 2022.12.06 |
스톱워치 앱 구현하기 (0) | 2022.12.02 |