본문 바로가기
IT 개발/안드로이드개발

[안드로이드] SharedPreferences 사용법 및 예제

by 만능이되고픈 잡캐 2018. 9. 27.

[안드로이드] SharedPreference를 이용하여 간단한 데이터들 저장하기


기본적으로 앱을 사용하기 위해서는 일회용성인 데이터가 필요할 일은 거의 없다. 항상 어떤 데이터든 간직하기 마련인데 

그러기 위해선 우린 안드로이드에 내장된 LocalDB인 SQLite를 사용하기도 하고, 서버의 DB에 연결하여 데이터들을 가져오고 

불러오기도 한다. 그런데 그런 방법 말고도 SharedPreference를 이용하여 간단한 데이터들을 저장하고 불러올 수 있다.

사용방법을 알아보도록 예제를 통해 알아보자.




[MainActivity.java]

public class MainActivity extends AppCompatActivity {


    private TextView textView1;
    private EditText editText;

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

        editText = (EditText)findViewById(R.id.edit1);
        textView1 = (TextView)findViewById(R.id.resultText1);

        //저장된 값을 불러오기 위해 같은 네임파일을 찾음.
        SharedPreferences sf = getSharedPreferences("sFile",MODE_PRIVATE);
        //text라는 key에 저장된 값이 있는지 확인. 아무값도 들어있지 않으면 ""를 반환
        String text = sf.getString("text","");
        textView1.setText(text);

    }

    @Override
    protected void onStop() {
        super.onStop();

        // Activity가 종료되기 전에 저장한다.
        //SharedPreferences를 sFile이름, 기본모드로 설정
        SharedPreferences sharedPreferences = getSharedPreferences("sFile",MODE_PRIVATE);

        //저장을 하기위해 editor를 이용하여 값을 저장시켜준다.
        SharedPreferences.Editor editor = sharedPreferences.edit();
        String text = editText.getText().toString(); // 사용자가 입력한 저장할 데이터
        editor.putString("text",text); // key, value를 이용하여 저장하는 형태
        //다양한 형태의 변수값을 저장할 수 있다.
        //editor.putString();
        //editor.putBoolean();
        //editor.putFloat();
        //editor.putLong();
        //editor.putInt();
        //editor.putStringSet();

        //최종 커밋
        editor.commit();


    }
}



[activity_main.xml]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="저장할 내용을 입력하세요."
        android:textSize="20dp" />

    <EditText
        android:id="@+id/edit1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/resultText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:textSize="20dp" />

</LinearLayout>


[앱 실행화면]


    


보는 것과 같이 처음 앱을 실행시켰을 때 저장할 내용을 적고 앱을 종료 후 다시 켰을 때 내용이 불러들여 진 것을 확인할 수 있다.