SharedPreferences๋?
- ํ๋ก๊ทธ๋จ์ ์ค์ ์ ๋ณด(์ฌ์ฉ์์ ์ต์ ์ ํ ์ฌํญ ์ด๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑ ์ ๋ณด)๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
- XML ํฌ๋งท์ ํ ์คํธ ํ์ผ์ย ํค-๊ฐ ์ธํธ๋ก ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
- getSharedPreferences(์ฌ๋ฌ ๊ฐ์ Shared Preferenceํ์ผ๋ค์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ)
< ์์์ฝ๋ >
val sharedPref = activity?.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE)
- ์์ ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ด๋ฐ ๊ตฌ์กฐ์ด๋ค.
getString(ํค-name),(๊ฐ-mode)
์ด๋!
< name, mode >๋?
1) name : ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ XML ํ์ผ์ ์ด๋ฆ์ด๋ค.
2) mode : ํ์ผ์ ๊ณต์ ๋ชจ๋
- getPreferences(ํ ๊ฐ์ Shared Preference ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ)
< ์์์ฝ๋ >
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
buildFeatures {
viewBinding = true
}
๊ทธ ๋ค์ MainActivity์์ binding์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ค์ ์์ฑํด์ค๋ค.
Activity_Main.xml ํ์ผ์ ์์ฑํด์ค๋ค. (EditText์ Button ์ถ๊ฐ)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity">
<EditText
android:id="@+id/et_hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:textSize="24sp"
android:textColor="@color/black"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
/>
<Button
android:id="@+id/btnSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์ ์ฅํ๊ธฐ"
android:textStyle="bold"
android:backgroundTint="#223657"
android:layout_marginTop="30dp"
app:layout_constraintTop_toBottomOf="@id/et_hello"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
class MainActivity : AppCompatActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.btnSave.setOnClickListener{
saveData()
Toast.makeText(this, "์ ์ฅ ์๋ฃ" , Toast.LENGTH_SHORT).show()
}
loadData()
}
private fun saveData() {
val pref = getSharedPreferences("pref",0)
val edit = pref.edit()
edit.putString("name", binding.etHello.text.toString())
edit.apply()
}
private fun loadData(){
val pref = getSharedPreferences("pref", 0)
binding.etHello.setText(pref.getString("name",""))
}
}
saveData
=> ์ ์ฅ ๋ฒํผ์ ๋๋ ์ ๋ ์ ๋ณด๊ฐ saveData๋ก ๋์ด๊ฐ๊ณ , ๊ทธ๊ฒ์ load ์ํจ๋ค.
=> saveData์๋ val pref๋ฅผ ์ ์ธํด์ฃผ๊ณ , ํค์ ๊ฐ์ ์ง์ ํด์ค๋ค.
=> saveData์์ EditText๋ฅผ binding ํด์ค๋ค.
loadData
=> val pref๋ก saveData์ ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
=> binding์ผ๋ก EditText๋ถ๋ถ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅ์ํจ๋ค.
EditText๋ฅผ ํ๋ ๋ ์ถ๊ฐํด์ค๋ค.
MainActivity๋ ์์ ํด์ค๋ค.
์คํํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1) ์ ์ฅ ์๋ฃ
2) ํ๋ก๊ทธ๋จ ๋ซ๊ธฐ
3) ๋ค์ ์คํํด์ ์ ๋ณด ๋จ์์๋์ง ํ์ธํ๊ธฐ
1) Emulator ์คํ๋๋ ๊ณณ ์ค๋ฅธ์ชฝ์ Device File Explorer ๋๋ฅด๊ธฐ
2) data ํ์ผ -> data ํ์ผ ์ฐพ๊ณ ๋๋ฅด๊ธฐ
3) ์ด๋ฆ์ sharedpreference ์ ํ ํ์ผ ์ฐพ๊ณ ๋๋ฅด๊ธฐ
์์ธ) sharedpreferenceํ์ผ์ ์ฐพ์๋๋ฐ pref ํ์ผ์ด ์ ๋ณด์ผ ๊ฒฝ์ฐ
์ด? ๋ฌด์ธ๊ฐ ๋ง์ด ์๋ต๋ ๊ฒ ๊ฐ์ด๋ค? ใ ใ ใ ใ ใ
์ด๊ฒ ์ผ๋ง๋ง์ ๋ณด๋......์จ์๋์ TIL์ธ์ง.....๋๋ฌผ