본문 바로가기

Programming/Android

SharedPreferences를 이용하여 ID와 Password 저장하기

흔히 웹페이지나 게임들을 할 때 로그인을 해야한다.

 안드로이드 어플에서도 그런 기능을 넣을 수 있지 않을까 생각해서 만들어 보기로 했다. 


음... 

구성은 EditBox 2개와 CheckBox 한개로 구성되어 있고

기능은 CheckBox가 Click 되어있고 Login을 하게 되면 다음 번 Login할 때 ID가 남아있는 형태이다. 


그럼 시작.

먼저 프로젝트를 하나 생성한다. (시대가 어떤시대인데 아직도 ADT Version이....-_-)



다음엔 생각했던 구성을 실제로 만들어야 한다. 


main.xml


여기서 눈여겨 봐야 할것은 

EditText의 inputType이다. 


먼저 inputType은 PW를 입력하는 EditText에만 있는데 값을 입력하면...●●●●● 이렇게 표시된다

checked의 관한 설명은 코드를 본 후 하겠다.


다음은 LoginActivity.java 파일이다


코드에서 딱히 어려운 부분은 없을 것이다.

간략하게 설명을 하자면

일단 SharedPreferences는 프로그램이 종료되어도 데이터를 저장합니다. 

그래서 ID/PW, 그리고 간략한 정보들을 저장하는데 아주 좋습니다. 

(용량이 큰 Data는 SQL을 이용해야 겠죠 -_-;;)


SharedPreferences pref = getSharedPreferences("login", 0);

preference의 이름은 login이고 뒤에 값은 0 인데 이것은 읽기 쓰기 공유를 한다는 것이다. 

login 이라는 이름은 나중에 값을 불러올 때 사용한다.


여기서 봐야 할것은 리스너 부분의 

edit.putString("id", id);

edit.remove("id");

이다. 체크박스가 클릭되어 있으면 저장, 해제 되어있으면 삭제이다. 


만약 위에 파일에서 boolean 값을 설정 안했을 경우를 예상해보자

1. 어플 실행

2. ID/PW 입력

3. CheckBox 체크

4. 어플 종료

5. 어플 재실행

6. ID/PW 입력이 되어있는 상태(preference) -> CheckBox의 상태는 해제되어있음(default)

7. 어플 종료

8. 어플 재실행

여기서 문제가 생김 

분명 위에서 해제되어 있는 상태로 종료했음에도

9. 어플 재실행

10. 마찬가지로 ID/PW 입력이 되어있는 상태......-_-

이유는 무엇인가 하니 체크박스 리스너도 클릭리스너이기 때문이다. 클릭을 하지 않으면 실행이 되지 않기 때문에 해제가 되어 있더라도 preference의 값이 삭제가 되지 않는 것이다. 


따라서 값을 읽어 온 다음 boolean 값을 바꾸어서 다음 번에 체크버튼을 누르지 않아도 값을 읽어오지 않는다. 그리고 저장을 하기 위해서는 다시한번 체크 버튼을 눌러야 하기 때문에 다시 저장이 된다. 


그럼 이제 어플을 실행해보자


초기화면 - 입력후 체크버튼클릭 - 어플 재실행화면



'Programming > Android' 카테고리의 다른 글

구글맵 길찾기  (0) 2012.10.25
SWT / JFACE  (0) 2012.08.10
JNI, NDK  (0) 2012.08.10
C2DM 관련 링크  (0) 2012.08.10
Custom Dialog를 대치할 수 있는 투명 Activity 만들기  (0) 2012.07.12