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
相关产品推荐
相关产品推荐

