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 값으로 변경해서 저장하고 불러올 수 있는 예제를 만들어보겠습니다.
'안드로이드 > 코드' 카테고리의 다른 글
[안드로이드] 각 프래그먼트 별 뒤로가기 버튼(백버튼) 이벤트 (뷰페이저 사용) - onBackPressed,FragmentStatePagerAdapter,ViewPager,AlertDialog (0) | 2019.11.28 |
---|---|
[안드로이드] Gson, SharedPreferences를 이용해서 클래스 저장하기 (0) | 2019.11.27 |
[안드로이드] 터치(클릭) 이벤트 감지 - GestureDetector,OnTouchListener (0) | 2019.11.24 |
[안드로이드] 볼륨키로 미디어 음량 조절하기 (0) | 2019.11.20 |
[안드로이드] 효과음 넣기 (SoundPool, AudioManager) (0) | 2019.11.19 |