티스토리 뷰

개발/안드로이드

shared preference 사용하기

맨날치킨 2022. 12. 31. 15:05
반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Shared preferences for creating one time activity

일회성 액티비티 생성을 위한 shared preferences

 문제 내용 

I have three activities A, B and C where A and B are forms and after filling and saving the form data in database (SQLite). I am using intent from A to B and then B to C. What I want is that every time I open my app I want C as my home screen and not A and B anymore.

저는 A, B, C 세 가지 액티비티가 있는데, 여기서 A와 B는 양식이며 양식 데이터를 채우고 데이터베이스(SQLite)에 저장합니다. 저는 A에서 B로 그리고 B에서 C로 인텐트를 사용하고 있습니다. 제가 원하는 것은 앱을 열 때마다 저는 더 이상 A와 B가 아닌 C를 제 홈 화면으로 원하는 것입니다.

 

I guess shared preferences would work for this, but I cannot find a good example to give me a starting place.

저는 shared preference가 이것에 효과가 있을 것이라고 생각하지만, 시작점을 줄 좋은 예를 찾을 수 없습니다.

 

 

 

 높은 점수를 받은 Solution 

Setting values in Preference:

preference에 값 설정:
// MY_PREFS_NAME - a static String variable like: 
//public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("name", "Elena");
 editor.putInt("idName", 12);
 editor.apply();

 

Retrieve data from preference:

preference에서 데이터 검색:
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
int idName = prefs.getInt("idName", 0); //0 is the default value.

 

More info:

추가 정보:

 

Using Shared Preferences

shared preference사용

 

Shared Preferences

shared preference

 

 

 

 가장 최근 달린 Solution 

SharedPreferences mPref;
SharedPreferences.Editor editor;

public SharedPrefrences(Context mContext) {
    mPref = mContext.getSharedPreferences(Constant.SharedPreferences, Context.MODE_PRIVATE);
    editor=mPref.edit();
}

public void setLocation(String latitude, String longitude) {
    SharedPreferences.Editor editor = mPref.edit();
    editor.putString("latitude", latitude);
    editor.putString("longitude", longitude);
    editor.apply();
}

public String getLatitude() {
    return mPref.getString("latitude", "");
}

public String getLongitude() {
    return mPref.getString("longitude", "");
}

public void setGCM(String gcm_id, String device_id) {
     editor.putString("gcm_id", gcm_id);
    editor.putString("device_id", device_id);
    editor.apply();
}

public String getGCMId() {
    return mPref.getString("gcm_id", "");
}

public String getDeviceId() {
    return mPref.getString("device_id", "");
}


public void setUserData(User user){

    Gson gson = new Gson();
    String json = gson.toJson(user);
    editor.putString("user", json);
    editor.apply();
}
public User getUserData(){
    Gson gson = new Gson();
    String json = mPref.getString("user", "");
    User user = gson.fromJson(json, User.class);
    return user;
}

public void setSocialMediaStatus(SocialMedialStatus status){

    Gson gson = new Gson();
    String json = gson.toJson(status);
    editor.putString("status", json);
    editor.apply();
}
public SocialMedialStatus getSocialMediaStatus(){
    Gson gson = new Gson();
    String json = mPref.getString("status", "");
    SocialMedialStatus status = gson.fromJson(json, SocialMedialStatus.class);
    return status;
}

 

 

출처 : https://stackoverflow.com/questions/23024831/shared-preferences-for-creating-one-time-activity

반응형
댓글
공지사항
최근에 올라온 글