본문 바로가기
패스트캠퍼스 30일챌린지

[안드로이드] 패스트캠퍼스 챌린지 22일차!!(getSharedPreferences, AlertDialog)

by 욧닭 2021. 9. 27.
반응형

들어가며

어제는 간단하게 ConstsraintLayout을 통해서 나의 비밀 정원 (로그인 구현) UI를 구현 해 보았습니다 이제 UI는 ConstraintLayout 만 있다면 껌이죠!!! 그러나 저희에겐... kotlin이라는 로직 구성이 아직 남았습니다!!

만들어 놓은 NumberPicker3개와 버튼 두개를 이용해서 좌물쇠를 여는 듯이 비밀번호를 설정 해보고 로그인 까지 해보는 시간을 가져볼 것입니다.

 

CODE

앞서 로또 추첨기와 마찬가지로 lazy 함수를 이용해서 NumberPicker 들을 초기화 할 것 입니다.

val numberPicker1: NumberPicker by lazy {
    findViewById<NumberPicker>(R.id.picker1).apply {
        minValue = 0
        maxValue = 9
    }
}
val numberPicker2: NumberPicker by lazy {
    findViewById<NumberPicker>(R.id.picker2).apply {
        minValue = 0
        maxValue = 9
    }
}
val numberPicker3: NumberPicker by lazy {
    findViewById<NumberPicker>(R.id.picker3).apply {
        minValue = 0
        maxValue = 9
    }
}

다음과 같이 lazy 함수를 하용한다면 선언과 동시에 minValue와 maxValue를 설정 할 수 있습니다 보통이라면 onCreate 함수에서 전역으로 선언 되어 있는 NumberPicker 들을 초기화 하곤 했습니다. 그렇게 된다면 가독성이 떨어지고 유지보수가 힘들어 집니다 왜하면 layz함수를 통해 한 중괄호 안에서 값을 처리한다면 수정 해야 할 곳이 모여있기 때문에 쉽지만 한줄 한줄 떨어져 있다면 유지보수가 많이 흠들어 질 것입니다.

 

다음으로는 버튼의 초기화 입니다. 버튼은 따로 값을 지정 할 필요가 없기 때문에 apply함수를 사용하지 않았습니다.

val openButton: AppCompatButton by lazy {
    findViewById(R.id.login_button)
}

val changePasswordButton: AppCompatButton by lazy{
    findViewById(R.id.chage_button)
}

기본적인 lazy 함수를 통해 버튼들을 초기화 해줬습니다

다음으로는 비밀번호를 변경하는데에 있어 비밀번호가 맞는지, 변경 버튼을 누른 후 로그인을 할때 에러 메세지를 띄운다던지 그런 행동들을 하기 위해서는 플래그 변수를 하나 심어두는 것이 좋습니다

 

var changePasswordMod = false

기본 값은 false로 설정 했습니다.

 

이제 로그인을 하기 앞서 로컬 DB에 값을 저장하는 방법을 사용할려고 합니다 기본적으로 getSharedPreferences 을 이용해서 파일을 만들고 값을 저장합니다

 

val passwordPreferences = getSharedPreferences("password", Context.MODE_PRIVATE)
val passwordFromUser = "${numberPicker1.value}${numberPicker2.value}${numberPicker3.value}"
if (passwordPreferences.getString("password","000").equals(passwordFromUser)){
//성공
//TODO 다이어리 작성휴 넘겨 줘야함
//startActivity()
}else{
    showErrorAlertDialog()
}

코드를 해석 해보자면 SharedPreferences라는 곳에 password 라는 파일은 Context.MODE_PRIVATE 즉 다른 사람들과 공유를 하지 않겠다! 라고 선언을 했습니다 그러면 저희는 password 폴더에 getString 을 통해 저장한 password 값을 가지고 올 수 있습니다

여기서 getString 은 password 파일에 password 라는 키로 저장되어 있는 값을 가지고 올 때 사용됩니다. 두번째 인자로 설정한 000 은 파일에 password라는 키를 가진 값이 없다면 default value로 값을 가져오겠다 라는 의미 입니다.

 

마지막으로 다이어로그 사용 방법에 대해 알아 보겠습니다

로그인을 하다 보면 수많은 에러 창을 볼 수 있습니다 그 중에서도 "패스워드가 틀렸습니다" 라는 문구를 많이 보게 될텐데요! 이 문구를 그냥 Toast 메세지로 사용자들에게 보여주기에는 너무 중요한 정보이기 때문에 AlertDialog를 통해 문구를 보여주도록 하겠습니다

AlertDialog.Builder(this@MainActivity)
        .setTitle("실패!!!")
        .setMessage("비밀번호가 잘 못 되었습니다.")
        .setPositiveButton("확인") { _, _ -> }
        .create()
        .show()
}

AlertDialog.Builder를 통해 dialog를 시작합니다. 보통의 팝업에는 제목과 설명이 있습니다 그것을 setTitle과 setMessage로 설정을 합니다 다음으로는 확인 버튼과 취소 버튼을 선언 할 수 있는데 지금은 확인 버튼만 사용하도록 하겠습니다 setPositiveButton을 사용하면 확인 이후 로직을 작성 할 수 있습니다!! 그리고 create 와 show를 통해 문구를 보여줄 수 있습니다.

 

 

 

 

 

 

 

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발#패스트캠퍼스후기#30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

반응형

댓글