본문 바로가기
안드로이드/개발자 일상

안드로이드 SharedPreferences 값 저장하고, 불러오기.

by 차누감 2020. 3. 12.
반응형

<최종 화면>

값을 입력하고 Set 버튼을 누르면 SharedPreferences에 저장을 한다.

Get 버튼을 누르면 저장했던 값을 불러와서 TextView에 표시한다.

 


데이터를 저장하기 위해선 3가지 방법이 있다.

SharedPreferences / File / DB

속도 측면 : SharedPreferences > DB> File

SharedPreference는 속도도 빠르기 때문에 간단한 저장을 할 경우에 많이 사용한다.

(DB는 다소 까다롭고 복잡하다.)

 

보통 자동 로그인 여부를 판별하기 위한 체크용도, 토큰 값 저장 등에 쓰이는 것 같다.

저장 경로: data/data/패키지명/shared_prefs/SharedPreference명.xml <=에 저장 된다.

저장 형태: Key, Value로 저장된다.

 

인스턴스 방법 2가지

1. getPreferences(int mode) - 해당 액티비티에서만 사용 가능

 

2. getSharedPreferences(String name, int mode) - 다른 액티비티에서 사용 가능

환경 설정 파일 'name'의 컨텐츠를 검색하고 보유하여 값을 검색하고 수정할 수있는 SharedPreferences를 리턴하십시오.

(getSharedPreferences를 주로 많이 사용한다.)

 

자세한 사항은 아래 android developer사이트의 문서를 확인해보자.

https://developer.android.com/reference/android/content/Context#getSharedPreferences(java.lang.String,%20int)

 

Context  |  Android 개발자  |  Android Developers

 

developer.android.com


우선 xml을 작성하자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xml version="1.0" encoding="utf-8"?>
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
 
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
 
    <Button
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:text="Set SharedPreferences"
        android:onClick="clickSetBt"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.715" />
 
    <Button
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:onClick="clickGetBt"
        android:text="Get SharedPreferences"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.495"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.821" />
 
 
 

 

이제 MainActivity.java를 작성하자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.example.ex_sharedpreferences;
 
 
import android.content.SharedPreferences;
 
public class MainActivity extends AppCompatActivity {
 
    EditText editText;
    TextView textView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        editText=findViewById(R.id.editText);
        textView=findViewById(R.id.textView);
 
    }// onCreate()..
 
    public void clickSetBt(View view) {    // Set버튼 클릭 시    SharedPreferences에 값 저장.
        if(editText.getText().toString().isEmpty()){ // 공백 또는 size=0이면
            Toast.makeText(this"값을 입력해주세요.", Toast.LENGTH_SHORT).show();
        }
        else {
            SharedPreferences sharedPreferences= getSharedPreferences("test", MODE_PRIVATE);    // test 이름의 기본모드 설정
            SharedPreferences.Editor editor= sharedPreferences.edit(); //sharedPreferences를 제어할 editor를 선언
            editor.putString("inputText",editText.getText().toString()); // key,value 형식으로 저장
            editor.commit();    //최종 커밋. 커밋을 해야 저장이 된다.
            Toast.makeText(this"저장되었습니다.", Toast.LENGTH_SHORT).show();
 
        }
    }// clickSetBt()..
 
    public void clickGetBt(View view) {     // Get버튼 클릭 시   SharedPreferences에 값 불러오기.
        SharedPreferences sharedPreferences= getSharedPreferences("test", MODE_PRIVATE);    // test 이름의 기본모드 설정, 만약 test key값이 있다면 해당 값을 불러옴.
        String inputText = sharedPreferences.getString("inputText","");
        textView.setText(inputText);    // TextView에 SharedPreferences에 저장되어있던 값 찍기.
        Toast.makeText(this"불러오기 하였습니다..", Toast.LENGTH_SHORT).show();
    }// clickGetBt()..
}// MainActivity class..
 
 

<실행 화면>

반응형

댓글