안드로이드 Shared Preferences

조회수 1915회

안드로이드의 SharedPreferences 클래스를 이용하여 두 엑티비티 간에 공유되는 속성을 만들고자 합니다. 이 속성들을 어떻게 하면 한 액티비티에서 다른 액티비티로 넘길 수 있을까요? 정적 변수도 가능할 수 있지만, 저에게 적합하지 않은 방법인 듯 합니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    인텐트를 이용하여 다른 액티비티에 넘겨주거나, 새로운 액티비티에서 필요한 속성을 읽어들여야 합니다.

    공유 속성 호출을 다룰 수 있는 헬퍼 클래스를 생성하시고, 속성을 저장하거나 읽어들일 액티비티에 해당 클래스의 인스턴스를 생성하세요.

    public class AppPreferences {
         public static final String KEY_PREFS_SMS_BODY = "sms_body";
         private static final String APP_SHARED_PREFS = AppPreferences.class.getSimpleName(); //  Name of the file -.xml
         private SharedPreferences _sharedPrefs;
         private Editor _prefsEditor;
    
         public AppPreferences(Context context) {
             this._sharedPrefs = context.getSharedPreferences(APP_SHARED_PREFS, Activity.MODE_PRIVATE);
             this._prefsEditor = _sharedPrefs.edit();
         }
    
         public String getSmsBody() {
             return _sharedPrefs.getString(KEY_PREFS_SMS_BODY, "");
         }
    
         public void saveSmsBody(String text) {
             _prefsEditor.putString(KEY_PREFS_SMS_BODY, text);
             _prefsEditor.commit();
         }
    }
    

    그 다음 액티비티에는 아래와 같이 작성해주시고 ...

    public class MyActivity extends Activity {
    
        private AppPreferences _appPrefs;
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            _appPrefs = new AppPreferences(getApplicationContext());
            // ...
        }
    }
    

    아래의 방법으로 값을 읽거나 저장하시면 됩니다.

    String someString = _appPrefs.getSmsBody();
    
    _appPrefs.saveSmsBody(someString);
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)