~메인 레이아웃에 버튼 하나 만들고 시작~
package com.example.kotlin_study.Android
import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.example.kotlin_study.R
import kotlinx.android.synthetic.main.activity_shared_preference.*
class SharedPreference : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_shared_preference)
//SharedPreference를 불러와보자
val sharedPreference = getSharedPreferences("sp1", MODE_PRIVATE)
//Mode
//MODE_PRIVATE:생성한 어플리케이션에서만 사용가능
//(원래 모드 많은데 API17이후부터 보안상의 이후로 PRIVATE만 제공)
//지금 내가 만든 sharedPreference에 데이터를 넣기 위해 editor 얻어오기
val editor: SharedPreferences.Editor = sharedPreference.edit()
editor.putString("hello", "안녕하세요") //key-value값으로 저장
editor.apply() //apply까지 해야 데이터 완전히 들어감
//sp1->SharedPreferences
// (Key,Value)로 ("hello", "안녕하세요") 가짐
//sp2->SharedPreferences
// (Key,Value)로 ("hello", "안녕하세요") 가짐
//sp1, sp2는 독립적인 저장공간이기때문에 서로 영향 주지 않음!!
//앱이 실행될때 위에서 sharedPreference의 sp1에 안녕하세요 저장시켰으니까 버튼 클릭시 데이터 꺼내와보자
button.setOnClickListener {
val sharedPreference = getSharedPreferences("sp1", MODE_PRIVATE)
val value = sharedPreference.getString("hello", "데이터 없음")
//key가 hello로 저장된 value값을 꺼내고 없으면 "데이터 없음"이 디폴트 값으로 출력
Log.d("key-value", "value:" + value)
}
}
}
sharedPreference.getString("hello2", "데이터 없음")
로 한다면 hello11의 value값에는 데이터가 없으니 '데이터 없음'이 로그에 찍힐 것~메인 레이아웃에 버튼 4개 달기~
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Android.SharedPreference"
android:orientation="vertical">
<Button
android:id="@+id/save_btn"
android:text="저장"
android:layout_width="100dp"
android:layout_height="100dp"/>
<Button
android:id="@+id/load_btn"
android:text="불러오기"
android:layout_width="100dp"
android:layout_height="100dp"/>
<Button
android:id="@+id/delete_btn"
android:text="부분지우기"
android:layout_width="100dp"
android:layout_height="100dp"/>
<Button
android:id="@+id/delete_all_btn"
android:text="전체지우기"
android:layout_width="100dp"
android:layout_height="100dp"/>
</LinearLayout>
~메인 엑티비티~
package com.example.kotlin_study.Android
import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.example.kotlin_study.R
import kotlinx.android.synthetic.main.activity_shared_preference.*
class SharedPreference : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_shared_preference)
//저장 버튼 클릭시 sharedPreference의 sp1에 데이터 저장
save_btn.setOnClickListener {
val sharedPreference = getSharedPreferences("sp1", MODE_PRIVATE)
val editor: SharedPreferences.Editor = sharedPreference.edit()
editor.putString("hello", "안녕하세요") //key-value값으로 저장
editor.putString("goodbye", "안녕히가세요") //key-value값으로 저장
editor.apply() //apply까지 해야 데이터 완전히 들어감
}
//불러오기 버튼 클릭시 sp1에 저장된 데이터 값들 로그에 찍힘
load_btn.setOnClickListener {
val sharedPreference = getSharedPreferences("sp1", MODE_PRIVATE)
val value1 = sharedPreference.getString("hello", "데이터 없음1")
val value2 = sharedPreference.getString("goodbye", "데이터 없음2")
Log.d("key-value", "value1:" + value1)
Log.d("key-value", "value2:" + value2)
}
//부분지우기 버튼 클릭시 sp1에 저장된 데이터 중 key가 hello인 데이터 삭제
delete_btn.setOnClickListener {
val sharedPreference = getSharedPreferences("sp1", MODE_PRIVATE)
val editor: SharedPreferences.Editor = sharedPreference.edit()
editor.remove("hello")
editor.apply()
}
//전체지우기 버튼 클릭시 sp1에 저장된 데이터 모두 삭제
delete_all_btn.setOnClickListener {
val sharedPreference = getSharedPreferences("sp1", MODE_PRIVATE)
val editor: SharedPreferences.Editor = sharedPreference.edit()
editor.clear()
editor.apply()
}
}
}