Language/Android Studio

[Android] 안드로이드 프레퍼런스(Preference)를 이용한 설정 정보 값 저장하기 | Yoon's Dev

Yooniron 2021. 5. 4. 21:36

안드로이드 프레퍼런스(Preference)를 이용한 설정 정보 저장하기

 

 

* 해당 글은 안드로이드 스튜디오 4.1.2 기준으로 설명되었습니다. *


TO Do.

 

기본 데이터, 입력, 설정 정보 저장 혹은 전달한 데이터를 저장, 관리하기 위한 데이터를 다루기

 

사용자가 입력한 정보, 환경 설정 정보 등을 간단히 저장 관 리 할 수 있는 프레퍼런스의 사용법을

간단한 액티비티 구현을 통해서 확인


프레퍼런스(Preference)

 

 

■ 프레퍼런스

✓ 제일 단순한 저장 형태

✓ 각 애플리케이션에 고유한 설정값을 지정

<키, 값>의 조합으로 데이터 저장

   . 에 이름을 부여하여 저장

   . 환경설정에 유용

 

✓ 주요 메서드

   . SharedPreference 인터페이스

 

- getSharedPreference()에 의해 반환된 프레퍼런스 객체를 접근/수정 제공

- SharedPreference.Editor editor = pref.edit()

   . 프레퍼런스 객체를 수정 후, commit() 연산으로 배치로 처리


 

프레퍼런스 예제

 

목표:

1. 처음 실행 시 기본 설정된 값으로 동작

2. 사용자 정보를 입력 후에 setting 버튼을 누르면 해당 정보를 저장, 다시 실행 시 해당 정보를 불러와 사용

 


 

1. 레이아웃 구성

 

 

activity_main.xml

 

 

ID를 입력받을 editText의 id 값: editText_id

 

ID를 입력받을 editText의 id 값

패스워드를 입력 받을 editText의 id 값: editText_pw

 

패스워드를 입력 받을 editText의 id 값

이번 포스팅에서는 프레퍼런스 기능을 확인하기 위한 부분이라 간단한 사용자 입력창으로만 구성하였다.

 

 

textView 2개와 editText 1개 그리고 패스워드를 받을 부분은 editText의 Password 형태 그리고 마지막으로 버튼 2개로 SETTING 버튼과 CLOSE 버튼으로 레이아웃을 구성하였다.

 

Baseline 설정

 

이런 식으로 옆 TextView와 editText의 높이를 맞추려면 Baseline을 이용하면 높이를 쉽게 맞출 수 있다.

 

2. Java Class 파일(기능 구현)

 

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
49
50
51
52
53
54
55
56
57
58
package com.example.preference;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
 
    EditText editText_id, editText_pw;
    Button btn01, btn02;
 
    SharedPreferences spref;
    SharedPreferences.Editor editor;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        editText_id = (EditText)findViewById(R.id.editText_id);
        editText_pw = (EditText)findViewById(R.id.editText_pw);
 
        btn01 = (Button)findViewById(R.id.btn01);
        btn02 = (Button)findViewById(R.id.btn02);
 
        btn01.setOnClickListener(this);
        btn02.setOnClickListener(this);
 
        spref = getSharedPreferences("gref", MODE_PRIVATE);
        editor = spref.edit();
 
        String temp1 = spref.getString("editText_id""id를 입력하세요");
        String temp2 = spref.getString("editText_pw""");
 
        editText_id.setText(temp1);
        editText_pw.setText(temp2);
    }
 
    @Override
    public void onClick(View v) {
        String txt01, txt02;
        txt01 = editText_id.getText().toString();
        txt02 = editText_pw.getText().toString();
 
        if(v.getId() == R.id.btn01) {
            editor.putString("editText_id", txt01);
            editor.putString("editText_pw", txt02);
            editor.commit();
        }
        if(v.getId() == R.id.btn02) {
            finish();
        }
    }
}
cs

 

getSharedPreference()에 의해 반환된 프레퍼런스 객체를 접근/수정 제공

 

SharedPreference.Editor editor = spref.edit()

프레퍼런스 객체를 수정 후, commit() 연산으로 배치로 처리

 

 

3. 실행결과

 

setting 버튼을 누르기 전엔 이런 식으로 기본 화면이 구성되어있을 것이다.

 

기본 화면

 

하지만 다음과 같이 ID와 비밀번호를 입력하고 SETTING 버튼을 눌러주게 되면

 

 

실행결과

 

이렇게 앱을 재실행해도 사용자가 입력했던 값이 남아 있는 것을 확인할 수 있다.