연락처 추가를 위한 Dialog를 제공합니다.
필수 구성 요소: Dialog 또는 DialogFragment, EditText, 기능 버튼
이름, 전화번호, 사진, 이메일 주소, 이벤트 정보(선택) 등을 입력할 수 있습니다.
입력 필드의 유효성 검사를 통해 사용자가 올바른 정보를 입력할 수 있도록 안내합니다.
이전에 SNS 앱 개발하면서 텍스트 필드에 추가했던 기능으로 기억한다. 이전에 사용했던 경험이 있다.
이렇게 이름, 전화번호, 이메일 주소, event 입력 필드에 문자를 제한하고 이를 통해 허용 가능한 문자들을 입력했을 시에만 accept 버튼을 눌러 dimiss가 가능하도록 했다.
추후 입력한 데이터들을 전달하기 위한 코드도 추가할 예정
사진추가버튼을 클릭하면 갤러리로 이동해 사진을 추가하도록 구현해줄 것이다.
일단 버튼을 클릭하면 갤러리로 이동하므로 Intent
를 이용해 주었다. 버튼 클릭이 되는걸 확인하기 위해 토스트 메세지를 추가해준 것이고 추후 제거할 예정.
근데 여기서 ACTION_PICK
이 있는데, ACTION_GET_CONTENT
도 이용이 가능하다. 두 가지의 차이점은 실행 시의 차이를 알 수 있는데, ACTION_PICK
의 경우에는 바로 갤러리 앱이 열리지만 ACTION_GET_CONTENT
는 갤러리가 아닌 폴더가 열려서 폴더에서 사진 파일을 선택해야 한다.
왼쪽 : ACTION_GET_CONTEXT // 오른쪽 : ACTION_PICK
현재 갤러리에 어떤 사진도 존재하지 않기 때문에 애뮬의 갤러리 폴더 안에 사진을 추가해준다. 넣고 싶은 사진을 드래그해서 애뮬의 바탕화면에 끌어주면 Downloads에 자동 저장된다.
갤러리에서 선택한 사진을 저장해 Dialog
의 imageView
로 설정해주면 될거 같았는데 아니 왜 안돼? 왜? 어제부터 열심히 해봤는데 절대 안되네 이거..?
뭘 어떻게 해도 사진이 변경이 안돼서Log
넣어서 확인해봤는데 계속 null
이 나오고 설정해줘도 싫다면서 설정 안해준다..... 진짜 너무 화난다...
갤러리로 넘어가는건 되니까 일단 다른 것부터 구현해보자!
event
를 EditText
로 설정하기에는 불편해서 버튼으로 바꿔주었다.
버튼 클릭 전과 클릭 후의 버튼 배경 색상을 변경하기 위해
drawable
폴더에normalbtn
와changebtn
파일을 만들고 설정해줬다.
버튼을 클릭할 때마다 버튼의 배경 색상이 변경되도록 설정해주면 끝 !
event
를 여러 개를 선택하는 것이 아니라 한 가지만 선택하도록 해줄 것이기 때문에 버튼 선택은 하나만 가능하도록 설정해줄 것이다.
selectedBtn
변수를 하나 만들어주는데 처음 선택한 버튼은 아무것도 없기 때문에null
로 설정해주고, 선택한 버튼은btnOff
,btn5m
,btn10m
,btn30m
과 같지 않기 떄문에 동일하지 않은 경우로 설정해주면 된다!
짜잔 - ! 완전 깔끔하게 실행된다 ! 갤러리에서 선택한 사진 추가만 잘되면 오늘 하루 정말 행복할텐데..