package com.example.firstapp.activity
|
|
import android.content.Intent
|
import android.os.Bundle
|
import android.os.CountDownTimer
|
import android.widget.Toast
|
import androidx.activity.viewModels
|
import androidx.appcompat.app.AppCompatActivity
|
import com.example.firstapp.MainActivity
|
import com.example.firstapp.databinding.ActivityPhoneLoginBinding
|
import com.example.firstapp.ui.login.LoginViewModel
|
import com.example.firstapp.utils.Log
|
|
class PhoneLoginActivity : AppCompatActivity() {
|
private lateinit var binding: ActivityPhoneLoginBinding
|
private val viewModel: LoginViewModel by viewModels()
|
private var countDownTimer: CountDownTimer? = null
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
Log.d("PhoneLoginActivity", "onCreate called")
|
binding = ActivityPhoneLoginBinding.inflate(layoutInflater)
|
setContentView(binding.root)
|
|
setupViews()
|
observeViewModel()
|
}
|
|
private fun setupViews() {
|
binding.apply {
|
btnBack.setOnClickListener {
|
startActivity(Intent(this@PhoneLoginActivity, LoginActivity::class.java))
|
finish()
|
}
|
|
tvSendCode.setOnClickListener {
|
val phone = etPhone.text.toString()
|
if (phone.length == 11) {
|
viewModel.sendVerificationCode(phone)
|
startCountDown()
|
// 17625318565 111111
|
} else {
|
Toast.makeText(this@PhoneLoginActivity,
|
"请输入正确的手机号", Toast.LENGTH_SHORT).show()
|
}
|
}
|
|
btnLogin.setOnClickListener {
|
val phone = etPhone.text.toString()
|
val code = etCode.text.toString()
|
if (phone.length == 11 && code.length == 6) {
|
viewModel.login(phone, code)
|
} else {
|
Toast.makeText(this@PhoneLoginActivity,
|
"请输入完整信息", Toast.LENGTH_SHORT).show()
|
}
|
}
|
}
|
}
|
|
private fun observeViewModel() {
|
viewModel.loginState.observe(this) { isLoggedIn ->
|
if (isLoggedIn) {
|
startActivity(Intent(this, MainActivity::class.java))
|
finishAffinity() // 结束所有之前的Activity
|
}
|
}
|
}
|
|
private fun startCountDown() {
|
binding.tvSendCode.isEnabled = false
|
countDownTimer?.cancel()
|
countDownTimer = object : CountDownTimer(60000, 1000) {
|
override fun onTick(millisUntilFinished: Long) {
|
binding.tvSendCode.text = "${millisUntilFinished / 1000}s"
|
}
|
|
override fun onFinish() {
|
binding.tvSendCode.isEnabled = true
|
binding.tvSendCode.text = "获取验证码"
|
}
|
}.start()
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
countDownTimer?.cancel()
|
}
|
}
|