250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Android
- 리액트
- java
- 개발
- mern Stack
- Node js
- 안드로이드 스튜디오
- 자바
- 입문
- Django
- mongodb
- javascript
- 안드로이드스튜디오
- 블로그만들기
- androidstudio
- nodejs
- react
- 자바스크립트
- MernStack
- PYTHON
- es6
- Android Studio
- express
- 파이썬
- 블로그 만들기
- 알고리즘
- 장고
- 안드로이드
- 중국어입문
- 중국어
Archives
- Today
- Total
City At Night
[Android Studio] SharedPreferences로 간단한 데이터 저장하기! 본문
728x90
반응형
Shared Preferences객체는 키-값 쌍이 포함된 파일을 가리키며 키-값 쌍을 읽고 쓸 수 있는 간단한 메서드를 제공합니다.
간단한 데이터를 저장할때 사용합니다.
키-값 쌍으로 이루어져 있기때문에 JSON API를 받아올때 바로 저장할 수 있는 장점?도 있죠.
여름숲님의 블로그 포스터를 기반으로 작성하였습니다.
https://re-build.tistory.com/37
너무 설명이 잘 되어 있어 제가 더 쉽게 설명할 수 가 없...
그래서 저는 사용자의 입력을 받아 그 값을 저장하는걸로 커스텀 하였습니다.
우선 코드 리뷰 갑니다.
<PreferenceManager.java>
import android.content.Context;
import android.content.SharedPreferences;
public class PreferenceManager {
public static final String PREFERENCES_NAME = "rebuild_preference";
private static final String DEFAULT_VALUE_STRING = "";
private static final boolean DEFAULT_VALUE_BOOLEAN = false;
private static final int DEFAULT_VALUE_INT = -1;
private static final long DEFAULT_VALUE_LONG = -1L;
private static final float DEFAULT_VALUE_FLOAT = -1F;
private static SharedPreferences getPreferences(Context context) {
return context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
}
/**
* String 값 저장
* @param context
* @param key
* @param value
*/
public static void setString(Context context, String key, String value) {
SharedPreferences prefs = getPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.apply();
}
/**
* boolean 값 저장
* @param context
* @param key
* @param value
*/
public static void setBoolean(Context context, String key, boolean value) {
SharedPreferences prefs = getPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(key, value);
editor.apply();
}
/**
* int 값 저장
* @param context
* @param key
* @param value
*/
public static void setInt(Context context, String key, int value) {
SharedPreferences prefs = getPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(key, value);
editor.apply();
}
/**
* long 값 저장
* @param context
* @param key
* @param value
*/
public static void setLong(Context context, String key, long value) {
SharedPreferences prefs = getPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putLong(key, value);
editor.apply();
}
/**
* float 값 저장
* @param context
* @param key
* @param value
*/
public static void setFloat(Context context, String key, float value) {
SharedPreferences prefs = getPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putFloat(key, value);
editor.apply();
}
/**
* String 값 로드
* @param context
* @param key
* @return
*/
public static String getString(Context context, String key) {
SharedPreferences prefs = getPreferences(context);
String value = prefs.getString(key, DEFAULT_VALUE_STRING);
return value;
}
/**
* boolean 값 로드
* @param context
* @param key
* @return
*/
public static boolean getBoolean(Context context, String key) {
SharedPreferences prefs = getPreferences(context);
boolean value = prefs.getBoolean(key, DEFAULT_VALUE_BOOLEAN);
return value;
}
/**
* int 값 로드
* @param context
* @param key
* @return
*/
public static int getInt(Context context, String key) {
SharedPreferences prefs = getPreferences(context);
int value = prefs.getInt(key, DEFAULT_VALUE_INT);
return value;
}
/**
* long 값 로드
* @param context
* @param key
* @return
*/
public static long getLong(Context context, String key) {
SharedPreferences prefs = getPreferences(context);
long value = prefs.getLong(key, DEFAULT_VALUE_LONG);
return value;
}
/**
* float 값 로드
* @param context
* @param key
* @return
*/
public static float getFloat(Context context, String key) {
SharedPreferences prefs = getPreferences(context);
float value = prefs.getFloat(key, DEFAULT_VALUE_FLOAT);
return value;
}
/**
* 키 값 삭제
* @param context
* @param key
*/
public static void removeKey(Context context, String key) {
SharedPreferences prefs = getPreferences(context);
SharedPreferences.Editor edit = prefs.edit();
edit.remove(key);
edit.apply();
}
/**
* 모든 저장 데이터 삭제
* @param context
*/
public static void clear(Context context) {
SharedPreferences prefs = getPreferences(context);
SharedPreferences.Editor edit = prefs.edit();
edit.clear();
edit.apply();
}
}
추가로 commit() 대신 apply()를 사용하라 권고 하고 있어서 apply()로 다 바꾸었습니다.(공식문서였나..? 생각이 가물가물..)
<MainActivity.java>
public class MainActivity extends AppCompatActivity {
private Context mcontext;
private TextView textView;
private EditText editText;
private String text;
private String contents;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
textView = findViewById(R.id.textView);
mcontext=this;
text = PreferenceManager.getString(mcontext,"Key2");
textView.setText(text);
}
public void btnOnclick(View view) {
switch (view.getId()){
case (R.id.button):
contents = editText.getText().toString();
PreferenceManager.setString(mcontext,"Key2",contents);
break;
}
}
}
코드 에러가 없는데 자꾸 값이 안넘어와서 몇십분 씨름한 결과...
key값의 K를 윗 줄에는 대문자로 썼고 아래 버튼 함수에는 소문자로 썼다는...
값을 입력하고 추가 버튼을 누른후 다시 앱을 들어가면 key값으로 넣은 데이터가 잘 들어간걸 확인 할 수 있습니다.
728x90
반응형
'Android Studio' 카테고리의 다른 글
[Android Studio]WebView를 사용하여 Web을 App처럼 사용하기 (2) | 2021.01.31 |
---|---|
[Android Studio] RecyclerView를 사용하여 데이터를 추가해보자! (0) | 2021.01.30 |
[Androi Studio] CustomDialog로 내가 원하는 팝업창 만들기! (0) | 2021.01.24 |
[Android Studio] AlertDialog로 팝업 메세지를 띄워보자! (0) | 2021.01.24 |
[Android Studio] Toast로 메세지 띄우기! (0) | 2021.01.23 |
Comments