2,3 번은 보안상 이유로 API level 17에서 deprecated됨
private fun saveData() {
val pref = getSharedPreferences("pref", 0)
val edit = pref.edit()
edit.putString("name", binding.edit.text.toString())
edit.apply()
}
edit() 선언 후 putString, Boolean, Int 등으로 자료형을 입력해 저장할 수 있다.
apply() : 비동기적으로 변경 사항을 저장하고, 블록 되지 않음.
commit() : 동기적으로 변경 사항을 저장하고, 저장이 완료될 때까지 블록된다.
private fun loadData() {
val pref = getSharedPreferences("pref", 0)
binding.edit.setText(pref.getString("name", ""))
}
geString, getBoolean, getInt 등으로 저장한 데이터를 읽어올 수 있다. (key, value)로 읽어오는 것을 잊지말자.
val pref = getSharedPreferences("pref", 0)
val edit = pref.edit()
editor.remove("key값")
editor.apply() // 적용
// 전체 삭제는 editor.clear()
class MainActivity : AppCompatActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.save.setOnClickListener {
saveData()
Toast.makeText(this, "data saved", Toast.LENGTH_SHORT).show()
}
loadData()
}
private fun saveData() {
val pref = getSharedPreferences("pref", 0)
val edit = pref.edit()
edit.putString("name", binding.edit.text.toString())
edit.apply()
}
private fun loadData() {
val pref = getSharedPreferences("pref", 0)
binding.edit.setText(pref.getString("name", ""))
}
}
class MainActivity : AppCompatActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
val sharedPref = getSharedPreferences("my_pref", Context.MODE_PRIVATE)
binding.save.setOnClickListener {
sharedPref.edit().run {
putString("data1", binding.edit.text.toString())
putBoolean("data2", binding.check.isChecked)
commit()
Toast.makeText(binding.root.context, "data saved", Toast.LENGTH_SHORT).show()
}
}
binding.get.setOnClickListener {
val data1 = sharedPref.getString("data1", "none")
val data2 = sharedPref.getBoolean("data2", false)
binding.result.text = "data1: $data1, data2: $data2"
}
}
}