【发布时间】:2021-10-16 00:20:46
【问题描述】:
我正在制作一个登录页面,该页面使用共享首选项存储用户的登录数据,但是在关闭应用程序后,当我再次打开它时,登录窗口不应该出现,但即使在使用共享首选项后也会出现,所以我每次打开它都必须登录应用程序我试图找到错误但找不到,所以任何人都可以告诉我代码哪里出错了。
package com.kartik.activitylifecycle
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
class LoginActivity : AppCompatActivity(){
lateinit var etMobileNumber: EditText
lateinit var etPassword: EditText
lateinit var btnLogin: Button
lateinit var txtForgotPassword: TextView
lateinit var txtRegister: TextView
val validMobileNumber="9999"
val validPassword= arrayOf("tony","steve","thanos","bruce")
lateinit var sharedPreferences: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sharedPreferences = getSharedPreferences(getString(R.string.preference_file_name), Context.MODE_PRIVATE)
val isLoggedIn = sharedPreferences.getBoolean("isLoggedIn",false)
if(isLoggedIn){
val intent = Intent(this@LoginActivity,AvengersActivity::class.java)
startActivity(intent)
} else{
setContentView(R.layout.activity_login)
}
title = "Log In"
etMobileNumber=findViewById(R.id.etMobileNumber)
etPassword=findViewById(R.id.etPassword)
btnLogin = findViewById(R.id.btnLogin)
txtForgotPassword=findViewById(R.id.txtForgotPassword)
txtRegister=findViewById(R.id.txtRegisterYourself)
btnLogin.setOnClickListener {
val mobileNumber = etMobileNumber.text.toString()
val password= etPassword.text.toString()
var nameofAvenger="Avenger"
val intent = Intent(this@LoginActivity,AvengersActivity::class.java)
if((mobileNumber == validMobileNumber)) {
if (password == validPassword[0]) {
savePreferences()
nameofAvenger = "IronMan"
intent.putExtra("Name", nameofAvenger)
startActivity(intent)
} else if (password == validPassword[1]) {
savePreferences()
nameofAvenger = "Captain America"
intent.putExtra("Name", nameofAvenger)
startActivity(intent)
} else if (password == validPassword[2]) {
savePreferences()
nameofAvenger = "The Hulk"
intent.putExtra("Name", nameofAvenger)
startActivity(intent)
} else if (password == validPassword[3]) {
savePreferences()
nameofAvenger = "The Avenger"
intent.putExtra("Name", nameofAvenger)
startActivity(intent)
}
}
else{
Toast.makeText(this@LoginActivity, "Wrong user id/password entered",Toast.LENGTH_LONG).show()
}
}
}
override fun onPause() {
super.onPause()
finish()
}
fun savePreferences(){
sharedPreferences.edit().putBoolean("is LoggedIn",true).apply()
}
}
【问题讨论】:
-
正如答案所说,
"is LoggedIn"!="isLoggedIn"。
标签: android android-studio kotlin sharedpreferences