안드로이드 SharedPreferences 옵션이나 간단한 데이터 저장하기





결과

초기 화면

데이터 입력, 종료 후 재시작





Layout 코드


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="ID"
        android:textSize="30sp" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="Pass"
        android:textSize="30sp" />

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="CheckBox"
        android:textSize="30sp"/>
</LinearLayout>




Java 코드

package com.example.testapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    EditText editText, editText2;
    CheckBox checkBox;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);
        editText2 = findViewById(R.id.editText2);
        checkBox = findViewById(R.id.checkBox);

        SharedPreferences sp = getSharedPreferences("temp", MODE_PRIVATE);

        String s = sp.getString("id", "");
        String s2 = sp.getString("pwd", "");
        Boolean b = sp.getBoolean("cb", false);

        editText.setText(s);
        editText2.setText(s2);
        checkBox.setChecked(b);
    }

    @Override
    protected void onStop() {
        super.onStop();
        SharedPreferences prefer = getSharedPreferences("temp", MODE_PRIVATE);
        SharedPreferences.Editor editor = prefer.edit();
        editor.putString("id", editText.getText().toString());
        editor.putString("pwd", editText2.getText().toString());
        editor.putBoolean("cb", checkBox.isChecked());

        editor.apply();
    }

}





데이터 저장하기

- onStop()부분에서 구현해줌으로써 종료하거나 할때 데이터를 저장할 수 있도록 한다.


- getSharedPerferences( 이름, 모드) 로 SharedPerferences 객체를 가져온다.

이름은 저장할 데이터 분류의 따라 지정해주며 모드는


MODE_PRIVATE : 해당 application에서만 사용 가능

MODE_WORLD_READABLE : 다른 application에서 읽기 가능

MODE_WORLD_WRITEABLE : 다른 application에서 쓰기 가능


들이 있으며 보안상의 문제도 있으니 왠만해서는 MODE_PRIVATE를 사용한다.


- 데이터를 저장할 때는 editor 객체의 putXXX(키, 값) 메소드를 사용하여서 <키, 값> 형태로 저장한다.


- 삭제해줄 때에는 remove(키)를 사용하면 가능하다.


- 값을 저장해주었으면 마지막으로 apply()commit()을 해준다.





데이터 가져오기

- 저장된 데이터를 다시 가져올 때도 우선 getSharedPerferences( 이름, 모드) 로 SharedPerferences 객체를 가져온다.


- 가져온 객체의 getXXX(키) 메소드를 사용하여서 <키, 값> 형태로 저장하였던 값을 가져올 수 있다.







+ Recent posts