- eidttext 다 보이지만 절차에 따라서 활성화
- id 입력 전에는 userId, pw 비활성화로 입력 불가능
- id 입력 시 userId 활성화
- userId 입력 시 pw 활성화
- 입력 가능한 문자 제한
- id : 영어, 숫자 입력 가능
- pw : 영어, 숫자, 특수문자 입력 가능
- userID : 한 / 영, 숫자, 특수문자 입력 가능
TexxtWatcher을 이용해서 텍스트를 입력 후 호출할 때 입력하는 부분이 영어 및 숫자 이외의 범위를 입력했다면 아이디 EditText의 옆에 에러 표시가 나오면서 영어 / 숫자만 입력이 가능하다는 문구가 출력된다.
Regex
상단의 SignUp 버튼을 클릭해서 회원가입 페이지가 나오고 정보를 올바르게 기입해 회원가입에 성공하면 로그인 페이지로 자동으로 이동된다. 그런데 이때, 상단의 버튼도 SignIn으로 자동으로 이동해야 하는데 이 부분이 구현이 안된걸 확인할 수 있다.
회원가입 성공 시 로그인 화면으로 자동 전환되도록 선언해준 함수 부분을 수정해주면 된다. 다음은 기존의 코드이다.
switchToSignIn
함수에서 상단의 SignIn
버튼을 상수로 하나 지정해주고 이를 performClick()
를 이용해 fragment
가 signIn
으로 변경되면서 버튼도 SignIn
을 누른 것으로 변경되도록 수정해주면 된다.
val signin = findViewById<Button>(R.id.signinbtn)
signin.performClick()
👉 참고
❓ 상단의
signIn
버튼은select_signIn
상수로 이전에 선언했던 것 같은데 왜 여기서 또 상수로 선언을 해야하지 ❓
버튼을 선언해 준 것은class 내부
에 선언해주었고, 이switchToSignIn
함수는class의 외부
에 선언되었기 때문에 새로 선언해주어야switchToSign
함수에서도 사용이 가능하다.
로그인 페이지도 회원가입과 동일하게 id에는 영어, 숫자만 사용이 가능하고, pw에는 영어, 숫자 및 특정 특수문자만 사용이 가능하게 문자를 제한해주면 된다.
그리고 허용 가능한 문자 이외의 문자를 넣었을 경우에는 로그인이 막히도록 bool형 변수를 이용해서 체크해주면 된다.
Fragment로 데이터 전달 부분을 배우지 못했기 때문에 나머지는 구현을 했어도 구글링을 통해 여러번 시도해봤지만 데이터 전달이 제대로 되지 않는 문제가 발생했다..
그래서 그냥 갈아엎고 새로 SignIn/SignUp Activity를 생성해서 해주기로 결정 !
layout은 이전에 사용했던 레이아웃으로 재탕..하자..
이전의 회원가입과 방식은 동일하고 추가해줘야 하는 부분은 Fragment에 추가해줬던 내용고 동일하다.
그럼 Activity니까 데이터 전달은 쉽게 되겠지.. 일단 새로 추가되는 유저들도 SNS를 이용할 수 있게 할 것이기 때문에 따로 데이터 클래스를 생성해 준다. 그리고 현민님께서 이 부분을 다뤄주셨는데, 만들 데이터 클래스를 싱글턴을 이용해서 다 같은 interface를 사용하도록 유도해주면 된다고 하셨다..
진짜 이거 어떻게 생각해내셨지.. 완전 감탄...
팀원들과 Git 협업을 통해 만들어낸 최종작품..