728x90
반응형
안녕하세요 이번 글에서는 코틀린을 이용해 SharedPerferences를 사용해 보겠습니다.
SharedPerferences는 애플리케이션의 간단한 데이터들을 외부 저장소가 아닌 내부 저장소에 저장을 할 때 사용합니다.
내부 저장소를 사용하는 것이다 보니 권한 설정이 필요 없고 간단한 코드로 구현이 가능합니다.
먼저 화면부터 구성하겠습니다.
<?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">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="전송"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/et"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
activity_main.xml
Editext와 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=".SubActivity">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="이름"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_age"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="나이"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_name"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
sub_activity.xml
main에서 보내준 값을 담을 TextView를 만들어 줍니다.
package com.example.sharedpreferences_kt
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
//EditText 에 작성한 값을 가지고 옵니다.
val name = et.text.toString()
//SharedPreferences 를 지정하여 주고 두번째 인자로 접근원한을 설정하여 줍니다. (다른접근 권한도 있지만 요즘은 MODE_PRIVATE 만 사용합니다)
val shared = getSharedPreferences("file", Context.MODE_PRIVATE)
//데이터를 저장하기 위해서 eidt() 함수를 호출하여 줍니다
val editor = shared.edit()
//데이터를 키 벨류 형식으로 저장
editor.putString("name",name)
//prefix 를 put 으로 지정하고 타입별로 지정하여 줍시다.
editor.putInt("age", 29)
//마지막에 apply 를 사용하여 실제로 반영을 합니다.
editor.apply()
//다음화면으로 이동시켜준다.
val intent:Intent = Intent(this,SubActivity::class.java)
startActivity(intent)
}
}
}
MainActivity클래스에 위와 같이 코딩하여 줍시다.
package com.example.sharedpreferences_kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_sub.*
class SubActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sub)
val shared = getSharedPreferences("file", MODE_PRIVATE)
//MainActivity 에서 보내온 값을 셋팅하여 줍시다 첫번째 인자로 키값을 지정하여 주고 두번째 인자로 default 값을 지정하여 줍니다.
tv_age.text = shared.getString("name","익명").toString()
tv_name.text = shared.getInt("age",0).toString()
}
}
마지막으로 SubActivity에서 값을 받아 줍니다.
다음과 같은 결과를 확인할 수 있습니다.
감사합니다~
728x90
반응형
'KOTLIN' 카테고리의 다른 글
코틀린(Kotlin) 안드로이드 스튜디오 SQLite 데이터베이스 사용하기-2 (0) | 2021.01.24 |
---|---|
코틀린(Kotlin) 안드로이드 스튜디오 SQLite 데이터베이스 사용하기-1 (0) | 2021.01.24 |
코틀린(Kotlin) 권한허용 (0) | 2021.01.17 |
코틀린(Kotlin) 리사이클러뷰 사용하기 (1) | 2021.01.10 |
코틀린(Kotlin) Spinner 사용하기 (0) | 2021.01.09 |