본문 바로가기

android programming

Shared Preferences

데이터의 저장보다는 UI 상태를 저장하는데 사용.

어플리케이션 중 특정 설정을 저장해야 하는 경우.
(자동 로그인, 비밀번호 저장 여부 설정 등설정들도 Shared Preferences를 이용하여 저장)

Activity와 관련하여 저장해야할 값들이 있는 경우 편리하게 Activity.getPreferences(int mode)를 이용할 수도 있습니다.

SharedPreference는 data/data/패키지이름/shared_prefs 폴더에 위에서 지정한 Preferences의 이름으로 저장됩니다.

public class prefExample extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        // "pref"라는 가진 Shared Preferences 객체를 생성합니다.
        SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE); // Shared Preference를 불러옵니다.
 
        EditText edit1 = (EditText)findViewById(R.id.EditText);
     CheckBox check1 = (CheckBox)findViewById(R.id.CheckBox01);
     CheckBox check2 = (CheckBox)findViewById(R.id.CheckBox02);
     
        // 저장된 값들을 불러옵니다.
     String text = pref.getString("editText", "");
     Boolean chk1 = pref.getBoolean("check1", false);
     Boolean chk2 = pref.getBoolean("check2", false);
     
     edit1.setText(text);
     check1.setChecked(chk1);
     check2.setChecked(chk2);
    }
   
    public void onStop(){ // 어플리케이션이 화면에서 사라질때
     super.onStop();
 //SharedPreferences 객체를 수정하려면, Editor 객체를 받아와야 합니다.
     SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE); // UI 상태를 저장합니다.
     SharedPreferences.Editor editor = pref.edit(); // Editor를 불러옵니다.
     
     EditText edit1 = (EditText)findViewById(R.id.EditText);
     CheckBox check1 = (CheckBox)findViewById(R.id.CheckBox01);
     CheckBox check2 = (CheckBox)findViewById(R.id.CheckBox02);
     
                // 저장할 값들을 입력합니다.
     editor.putString("editText", edit1.getText().toString());
     editor.putBoolean("check1", check1.isChecked());
     editor.putBoolean("check2", check2.isChecked());
     
     editor.commit(); // 저장합니다.
    }
}

'android programming' 카테고리의 다른 글

HTTP  (0) 2010.03.26
http에 request요청시... redirect 하는 방법...  (0) 2010.03.05
문자코드변환  (0) 2010.03.04
커스텀 리스트뷰 다이얼로그에 컨텍스트메뉴리스너 달기..  (0) 2010.03.04
팝업창(Dialog)  (0) 2010.01.24