✔ 자동로그인, sharedpreferences
.kt
Toast.makeText(this, "자동 로그인되었습니다", Toast.LENGTH_SHORT).show()
Login.kt(회원가입 버튼눌렀을때 회원가입페이지로 전환)
to_signup.setOnClickListener{
var intent= Intent(this, SignUpActivity::class.java)
startActivityForResult(intent,1)
}
Signup.kt(회원가입 완료시 로그인 페이지로 전환)
var intent= Intent(this, LoginActivity::class.java)
intent.putExtra("email", editText.text.toString())
intent.putExtra("password", editText4.text.toString())
setResult(Activity.RESULT_OK, intent)
Login.kt(가지고 온 결과로 띄우기)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK){
when(requestCode){
1->{
editText.setText(data!!.getStringExtra("email"))
editText2.setText(data!!.getStringExtra("password"))
}
}
}
}
App.kt
class App: Application() {
override fun onCreate(){
super.onCreate()
MySharedPreferences.init(this)
}
}
MySharedPreferences.kt
object MySharedPreferences {
private const val NAME = "trace.trace_study"
private const val MODE = Context.MODE_PRIVATE
private lateinit var preferences: SharedPreferences
// SharedPreferences variables
private val IS_LOGIN = Pair("is_login", false) //자동로그인 여부
private val EMAIL = Pair("email", "")
private val PASSWORD = Pair("password", "")
fun init(context: Context){
preferences = context.getSharedPreferences(NAME, MODE)
}
// an inline function to put variable and save it
private inline fun SharedPreferences.edit(operation: (SharedPreferences.Editor) -> Unit) {
val editor = edit()
operation(editor)
editor.apply()
}
// 값 가져오기 / 변경하기. 걍 MySharedPreferences.email 이런 식으로 값 가져오고 바로 변경 가능
var islogin: Boolean
get() = preferences.getBoolean(IS_LOGIN.first, IS_LOGIN.second)
set(value) = preferences.edit {
it.putBoolean(IS_LOGIN.first, value)
}
var email: String
get() = preferences.getString(EMAIL.first, EMAIL.second) ?: ""
set(value) = preferences.edit {
it.putString(EMAIL.first, value)
}
var password: String
get() = preferences.getString(PASSWORD.first, PASSWORD.second) ?: ""
set(value) = preferences.edit {
it.putString(PASSWORD.first, value)
}
}
mainactivity.kt(사용할 곳에서 데이터 저장/사용)
MySharedPreferences.islogin = true
MySharedPreferences.email = editText.text.toString()
MySharedPreferences.password = editText2.text.toString()
if (MySharedPreferences.islogin) {
//내용
}