반응형
앱을 작성하다보면 굳이 DB까지 사용할 정도로 데이터 양이 많지는 않지만 앱이 종료 되어도 값이 저장이 될 경우가 필요한 시나리오가 있다. (예를 들면, switch를 이용한 값을 변경했을 때 다시 앱을 실행해도 그 값이 그대로 적용이 되어야 하는 경우)
EditCtrl을 하나 만들어서 거기에 입력된 값이 앱이 종료 후 재실행 되어도 그대로 저장이 되어 있도록 구현해 보자. UI 상으로는 입력된 값이 EditCtrl에 그대로 남아 있는 것처럼 보이지만 사실은 앱이 종료될 때 SharedPreferences에 저장을 했다가 재실행 될때 그 값을 읽어서 다시 EditCtrl에 뿌려주는 것이다.
1. activity_main.xml에 EditCtrl 생성
<?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"
tools:context=".MainActivity">
<EditText
android:id="@+id/et_save"
android:layout_width="100dp"
android:layout_height="wrap_content" />
</LinearLayout>
2. MainActivity 설정
package com.example.sharedexample;
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;
String shared = "file";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_save = (EditText) findViewById(R.id.et_save); // xml 연결
// SharedPreferences 선언
SharedPreferences sharedPreferences = getSharedPreferences(shared, 0);
String value = sharedPreferences.getString("key", ""); // "key"에 해당하는 값을 읽어옴
et_save.setText(value); // 읽어온 값을 EditCtrl에 set 함
}
@Override
protected void onDestroy() {
super.onDestroy();
// SharedPreferences 선언
SharedPreferences sharedPreferences = getSharedPreferences(shared, 0);
// EditCtrl에 적힌 값을 읽어서 저장하기
SharedPreferences.Editor editor = sharedPreferences.edit(); //edit mode로 전환
String value = et_save.getText().toString(); //editctrl에 입력된 값을 문자열로 가져옴
editor.putString("key", value); //가져온 문자열을 key라는 별명으로 editor에 저장함
editor.commit(); // editor에 값을 save하는 과정
}
}
앱이 종료될 때 onDestory()를 콜백하면 SharedPreferences를 만들어서 EditCtrl의 값을 옮겨 놓은 후, 앱이 재실행 될때 onCreate()에서 다시 SharedPreferences를 만들어서 값은 키값으로 저장된 값을 불러와서 EditCtrl에 set 해주는 것이다.
<결과>
앱 종료 후 재실행 했을 때 입력값이 그대로 남아있다.
반응형
'Android > 기본기능' 카테고리의 다른 글
[Android] LinearLayout을 사용해서 화면을 일정 비율로 3등분하기 (0) | 2023.10.14 |
---|---|
[Android] webView 사용하기 (0) | 2023.10.02 |
[Android] ListView 구성하기 (0) | 2023.10.01 |
[Android] ImageView를 누르면 Toast 메시지 띄우기 (0) | 2023.10.01 |
[Android] Intent로 다른 Activity 호출하기 (1) | 2023.09.30 |
댓글