You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin应用重启后跳转LoginActivity而非Dashboard问题求助

问题:应用重启后无法保持登录状态回到DashboardActivity

我用Android Studio+Kotlin开发了一个简易应用,功能正常无报错,但存在一个问题:邮箱密码登录后能进入DashboardActivity,但关闭重启应用时,会回到LoginActivity,而不是停留在DashboardActivity。附上相关代码寻求帮助:

MainActivity.kt

class MainActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
    initData()
}
private fun initData(){
    auth = FirebaseAuth.getInstance()
    checkIfUserIsLoggedIn()
}
private fun checkIfUserIsLoggedIn(){
    val currentUser = auth.currentUser
    if (currentUser != null){
        startActivity(Intent(this,DashbordActivity::class.java))
        finish()
    }else{
        startActivity(Intent(this,LoginActivity::class.java))
        finish()
    }
}
}

DashboardActivity.kt

class DashbordActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
private lateinit var binding: ActivityDashbordBinding
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityDashbordBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
    initData()
}
private fun initData(){
    auth = FirebaseAuth.getInstance()
    setUserEmail()
    clickListener()
}
private fun clickListener(){
    binding.btnSignOut.setOnClickListener {
        auth.signOut()
        startActivity(Intent(this,LoginActivity::class.java))
        finish()
    }
}
private fun getCurrentUserEmail():String?{
    return  auth.currentUser?.email
}
private fun setUserEmail(){
    binding.tvUserEmail.text = "welcome " + getCurrentUserEmail()
}
}

LoginActivity.kt

class LoginActivity : AppCompatActivity() {
private lateinit var binding: ActivityLoginBinding
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityLoginBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
    initData()
}
private fun initData(){
    auth = FirebaseAuth.getInstance()
    clickListener()
}
private fun clickListener(){
    binding.llNewUser.setOnClickListener {
        startActivity(Intent(this,RegisterActivity::class.java))
        finish()
    }
    binding.btnLogin.setOnClickListener {
        getUserData()
    }
}
private fun getUserData(){
    val email = binding.etEmail.text.toString()
    val password = binding.etPassword.text.toString()
    if (email.isNotEmpty() && password.isNotEmpty()){
        authUser(email,password)
    }else{
        Toast.makeText(this,"All inputs required ...",Toast.LENGTH_LONG).show()
    }
}
private fun authUser(email: String, password: String){
    auth.signInWithEmailAndPassword(email,password)
        .addOnCompleteListener {
            checkResult(it.isSuccessful)
        }
}
private fun checkResult(isSuccess: Boolean){
    if (isSuccess){
        startActivity(Intent(this,DashbordActivity::class.java))
        finish()
    }else{
        Toast.makeText(this,"Authentication failed ...",Toast.LENGTH_LONG).show()
    }
}
}

RegisterActivity.kt

class RegisterActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
private lateinit var binding: ActivityRegisterBinding
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    auth = FirebaseAuth.getInstance()
    binding = ActivityRegisterBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
    initData()
}
private fun initData(){
    auth = FirebaseAuth.getInstance()
    clickListener()
}
private fun clickListener(){
    binding.btnRegister.setOnClickListener {
        createUser()
    }
    binding.llHaveAccount.setOnClickListener {

    }
}
private fun createUser(){
    val email = binding.etEmail.text.toString()
    val password = binding.etPassword.text.toString()
    val cPassword = binding.etcPassword.text.toString()
    if (email.isNotEmpty() && password.isNotEmpty() && cPassword.isNotEmpty()){
        if (password == cPassword){
            saveUser(email,password)

        }else{
            Toast.makeText(this,"Password mismatch",Toast.LENGTH_LONG).show()
        }
    }else{
        Toast.makeText(this,"All inputs required",Toast.LENGTH_LONG).show()
    }
}
private fun saveUser(email: String, password: String){
    auth.createUserWithEmailAndPassword(email,password)
        .addOnCompleteListener {
            checkResults(it.isSuccessful)
        }
}
private fun checkResults(isSuccess: Boolean){
    if (isSuccess){
        startActivity(Intent(this,LoginActivity::class.java))
        finish()
    }else{
        Toast.makeText(this,"Create to create your account",Toast.LENGTH_LONG).show()
    }
}
}

内容的提问来源于stack exchange,提问作者Mahdi Azimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:44:55