[ 실행 화면 ]
SharedPreferences를 이용해서 앱을 나가거나 뒤로가기를 해도 텍스트가 그대로 남아있도록 해보기!
※ 주의 : SharedPreferences는 앱을 아예 삭제하면 소멸된다. 이 경우에는 데이터베이스를 써야함...
1. 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:id="@+id/main"
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>
activity_main.xml은 간단하게 EditText 하나만 추가시켰다.
SharedPreferences는 대부분 MainActivity에서 작동할 예정이다.
2. MainActivity.java
package com.example.sharedexample;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
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 = findViewById(R.id.et_save);
//인자 두개 1. string값 만들어둔 것 1번째 인자, 2.는 mode, 0으로 설정
SharedPreferences sharedPreferences = getSharedPreferences(shared,0);
//인자 두개, 1. value 가져올 별명 2. 빈값으로 고정
String value = sharedPreferences.getString("sojung","");
//et_save에 value를 setText해주기 (value string값을 넣어주기)
et_save.setText(value);
}
@Override
protected void onDestroy() { //이 액티비티를 벗어났을 때 실행되는 것
super.onDestroy();
//SharedPreferences로 저장을 시키고 나갈 수 있도록..
SharedPreferences sharedPreferences = getSharedPreferences(shared,0);
//저장을 할때 항상 .Editor을 불러와줘야한다.
SharedPreferences.Editor editor = sharedPreferences.edit();
//sharedPreferences안에 에디터를 연결시켜준 것
String value = et_save.getText().toString(); //현재 써져있는 값 받아오기, toString 형태로
//editor에 받아온 값을 그대로 적어주기
//sojung이라는 별명으로 value값을 가져오기
editor.putString("sojung",value);
editor.commit();
}
}
주석으로 줄줄이 뭘 많이 써놓긴 했는데...
다시 한번 쓰면서 복기해보기!
첫번째로 해 줄 일은 언제나 그랬듯 변수 선언하고 id 할당해주기!
- EditText et_save;
- String shared = "file" : shared 이름의 String 변수를 하나 만들어준다! 뒤에서 사용됨
- et_save = findViewById (R.id.et_save);
//인자 두개 1. string값 만들어둔 것 1번째 인자, 2.는 mode, 0으로 설정
SharedPreferences sharedPreferences = getSharedPreferences(shared,0);
두번째로 해 줄 일은 내용을 저장해야하니까 SharedPreferences 변수 만들어주기!
SharedPreferences 까지 치고 다음에 s 하나만 치면 자동적으로 변수 이름을 추천해준다.
첫번째 인자로는 String값으로 만들어둔 변수 shared, 두번째 인자는 mode인데 그냥 0으로 설정한다.
이후 액티비티를 나가거나, 종료되거나 했을 시 실행할 함수를 만든다.
@Override
protected void onDestroy() { //이 액티비티를 벗어났을 때 실행되는 것
super.onDestroy();
//SharedPreferences로 저장을 시키고 나갈 수 있도록..
SharedPreferences sharedPreferences = getSharedPreferences(shared,0);
//저장을 할때 항상 .Editor을 불러와줘야한다.
SharedPreferences.Editor editor = sharedPreferences.edit();
//sharedPreferences안에 에디터를 연결시켜준 것
String value = et_save.getText().toString(); //현재 써져있는 값 받아오기, toString 형태로
//editor에 받아온 값을 그대로 적어주기
//sojung이라는 별명으로 value값을 가져오기
editor.putString("sojung",value);
editor.commit();
}
이름에서부터 onDestroy! 액티비티를 벗어났을 때 실행될 것이라는 강한 촉이 온다.
여기서도 마찬가지로 SharedPreferences 변수를 선언해준다.
그리고 내용을 저장하기 위해서는 항상 .Editor을 써주어야한다고 한다.
SharedPreferences.Editor editor = sharedPreferences.edit(); 과정으로 연결시켜주기!
Editor도 뒤에 ed까지 치면 자동적으로 변수 이름을 추천해준다.
String 으로 value를 선언해주고, et_save.getText().toString()으로 et_save에 써진 내용을 String형태로 받아온다.
그러면 value 값에는 et_save의 내용이 String 형태로 저장되어있다.
이제 editor에 받아온 값을 그대로 적어주면 된다.
editor.putString ("별명", "받아올 값"); //editor.putString("sojung", value);
editor.commit(); 까지 해주면 editor에 저장이 완료된다.
이제 다시 onCreate 함수로 돌아가서
//인자 두개, 1. value 가져올 별명 2. 빈값으로 고정
String value = sharedPreferences.getString("sojung","");
//et_save에 value를 setText해주기 (value string값을 넣어주기)
et_save.setText(value);
이 코드를 추가해준다!
여기서도 value를 선언하고, sharedPreferences는 getString으로 받아올 값을 가진 별명을 첫번째 인자로 가져온다.
두번째 인자는 빈값으로 고정...
마지막으로 et_save.setText(value); 까지 해서 et_save에 value값을 넣어주면?
액티비티를 벗어나도 값이 저장되어있는 SharedExample 만들기 완성~
SharedExample 같은 경우는 휴대폰에서 스위치 고정, 진동/무음 고정 등에 주로 쓰인다고 한다.
물론 이렇게 내용을 기억해야하는 경우에도 종종 쓰인다!
써둔 코드를 보니 onCreate에서는 불러오기, onDestroy에서는 저장하기 가 되는것을 알 수 있당 :)
+ 나의 의문 ... shared는 무슨 의미지? → chatGPT 답변
String shared = "file";의 선언은 SharedPreferences를 사용할 때 공유 설정 파일의 이름을 지정하기 위한 것입니다. 이 문자열은 getSharedPreferences() 메서드에 전달되어, 설정 값을 저장하거나 불러올 때 사용됩니다.
설정 파일의 이름 지정: getSharedPreferences(shared, 0) 메서드에서 첫 번째 인자로 전달되는 문자열이 설정 파일의 이름이 됩니다. 이 이름은 Android의 내부 저장소에 있는 실제 파일 이름을 나타내며, 이 파일에 설정 값이 저장됩니다. 만약 이 이름을 동일하게 사용한다면, 다른 액티비티나 서비스에서도 같은 설정 파일에 접근할 수 있습니다.
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오] 앱만들기 #10. Navigation Menu 커스텀 (0) | 2024.09.03 |
---|---|
[안드로이드 스튜디오] 앱만들기 #9. WebView (0) | 2024.09.03 |
[안드로이드 스튜디오] + ActionBar에 Menu 추가하기 (1) | 2024.08.29 |
[안드로이드 스튜디오] 앱만들기 #7. Navigation Drawer Activity (0) | 2024.08.29 |
[안드로이드 스튜디오] 앱만들기 #6. ListView (0) | 2024.08.27 |