본문 바로가기

안드로이드/코드

[안드로이드] SharedPreferences를 이용해서 데이터를 저장해보자

반응형

 

 

 

 

sharedpreferences

 

SharedPreferences를 이용하면 원하는 데이터를 저장할 수 있습니다.

EditText에 텍스트가 입력되고 앱이 종료 될때( onDestroy() ) 값이 저장되는 예제를 만들어보겠습니다.

 

1. activity_main.xml

<?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_save"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="텍스트를 입력하세요"
        android:textSize="30sp"
        android:textColor="@android:color/black"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

기본 제공되는 레이아웃 안에서 TextView를 EditText로 변경만 했습니다.

id값만 잘 기억해주세요.

 

2. MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    EditText et_save;
    SharedPreferences sp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_save = findViewById(R.id.et_save);
        sp = getSharedPreferences("sp", MODE_PRIVATE);
        String save = sp.getString("save", "");
        et_save.setText(save);
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        save(et_save.getText().toString());
    }

    public void save(String s){
        sp = getSharedPreferences("sp",MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.putString("save",s);
        editor.commit();
    }

}

 

sp = getSharedPreferences("sp",MODE_PRIVATE); - "sp"는 원하는 파일명을 적으시면 됩니다.

저는 save라는 함수를 만들어서 저장을 할 수 있도록 해봤는데 방법은 원하시는대로 변경해서 사용하셔도 좋습니다.

참고로 "sp"라는 이름을 지정해주었으면 그대로 "sp" 이름을 계속 사용해줘야합니다. 다른이름으로 변경하면 파일을 불러 올 수 없습니다.

 

editor.putString("save",s); - "save"는 변수명이라고 생각하시면 될 것 같습니다. save라는 변수명으로 String s를 저장한다고 생각하시면 됩니다.

Editor에는 putBoolean, putFloat, putInt, putLong, putStringSet 함수가 더 있습니다.

 

editor.commit(); - 커밋을 해주셔야 확정적으로 저장이 됩니다.

 

String save = sp.getString("save", ""); - "save"라는 키 값으로 저장 했기 때문에 첫번째 인자로 "save"라고 넣어주었고

두번째 값은 default 값입니다. "save"라는 키값으로 저장된 값이 없을때 넣어줄 값을 의미합니다.

 

추가사항

editor.remove("save"); - "save"변수 안의 값을 삭제합니다.

 

editor.clear(); - SharedPreferences 안의 모든 데이터를 삭제합니다.

 

저장된 파일을 확인하고 싶으시다면 안드로이드 스튜디오 안에서

View - > Tools Windows -> Device File Explorer -> data -> data -> 패키지명 -> shared_prefs

경로로 들어가면 xml파일이 있는데 더블 클릭하시면 저장된 값을 확인 하실 수 있습니다.

 

 

다음 포스팅은 SharedPreferences, Gson을 이용하여 본인이 직접 만든 클래스를 String 값으로 변경해서 저장하고 불러올 수 있는 예제를 만들어보겠습니다.

 

 

 

 

 

반응형