-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[1주차/필수/XML] Android UI 구현 기초 : 회원가입 및 로그인 #3
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
놀랍게도 깔끔한.... 수고 많으셨어용 같이 성장 레쭈고 으썃
binding.tvMainName.text = userName | ||
binding.tvMainShowId.text = userId | ||
binding.tvMainShowPw.text = userPw | ||
binding.tvMainShowPlace.text = userPlace |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요기 제가 준서님한테 리뷰받았는데 같이 참고해주시면 좋을 듯 합니다 ㅎㅎ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아린님 PR 읽어보시면서 with(binding)을 찾아보세요!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
with(binding) 블럭으로 묶는거 잘 보고왔습니다 ^^
if (binding.etSignUpId.text.length in 6..10 && | ||
binding.etSignUpPw.text.length in 8..12 && | ||
binding.etSignUpName.text.isNotEmpty() && | ||
binding.etSignUpPlace.text.isNotEmpty()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
조건문 너무 길어지면 함수로 빼는게 가독성면에서 보기 좋아욥!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다음 과제부턴 함수를 적극 활용해서 가독성을 높여보겠습니다!
android:layout_height="wrap_content" | ||
android:layout_marginTop="50dp" | ||
android:gravity="center" | ||
android:text="Welcome to SOPT" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
하드코딩 된 text는 string value로 빼는 습관을 들여두는 거 어떨까여!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
텍스트 위에 살짝 마우스 올리면 스트링으로 뺄 수 있게 뜰거예용!! 그렇게 추가하면 됩니당
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
하드코딩 된 문자열에 alt+shift+enter를 눌렀더니 strings.xml로 추출이 되네요! 확실하게 배워갑니다!
app:layout_constraintTop_toBottomOf="@+id/tvMainShowId" | ||
app:layout_constraintStart_toStartOf="parent"/> | ||
|
||
<TextView |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
인풋타입 패스워드 써보시면 ..!🤩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
과제 조건에도 있었답니다?!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MainActivity 에는 비밀번호가 안보이게 하라는 과제 명세가 없었던거 같아서 로그인과 회원가입 시에만 구현을 해놨네요! 생각해보니까 비밀번호 그냥 보여주는게 이상한거 같기도..?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
진짜 쉽지 않았을텐뎅 엄청 노력한 흔적이 보였어요!! 같이 열심히 성장해봐용
<category android:name="android.intent.category.LAUNCHER" /> | ||
</intent-filter> | ||
</activity> | ||
<activity | ||
android:name=".SignUpActivity" | ||
android:exported="false"/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
배운대로 야무지게 false 설정까지..크!!
android:layout_height="wrap_content" | ||
android:layout_marginTop="50dp" | ||
android:gravity="center" | ||
android:text="Welcome to SOPT" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
텍스트 위에 살짝 마우스 올리면 스트링으로 뺄 수 있게 뜰거예용!! 그렇게 추가하면 됩니당
|
||
|
||
<TextView | ||
android:id="@+id/tvSignUpTitle" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아이디 이름 설정을 명확하게 아주 잘 정하셨네용?! 완전 굿굿
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
준서형의 꿀팁 전수가 있었습니다 ^^
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이사람 못한다는거 다 기믹이었어...? 왜잘해 🧐
if (binding.etSignInId.text.toString()== userId) { | ||
if (binding.etSignInPw.text.toString() == userPw) { | ||
Toast.makeText(this, "로그인 되었습니다!", Toast.LENGTH_SHORT).show() | ||
|
||
val intent = Intent(this,MainActivity::class.java) // 메인 페이지로 이동 | ||
intent.putExtra("ID",userId) | ||
intent.putExtra("PW",userPw) | ||
intent.putExtra("Name",userName) | ||
intent.putExtra("Place",userPlace) | ||
startActivity(intent) | ||
} | ||
else | ||
Toast.makeText(this, "비밀번호가 잘못되었습니다", Toast.LENGTH_SHORT).show() | ||
} | ||
else { | ||
Toast.makeText(this, "아이디가 잘못되었습니다!", Toast.LENGTH_SHORT).show() | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
객체 지향 생활 체조 원칙 제 2항 : else 예약어를 쓰지 않는다
위 링크 참고하시면 좋을거같아요 👍👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
링크 참고하니까 로그인 유효성을 검증하는 함수 isValidId() 등을 만들어서 return 문을 이용하면 훨씬 간결한 코드로 작성 가능하다는게 확 와닿네요!
} | ||
|
||
binding.btnJoin.setOnClickListener { | ||
val intent = Intent(this,SignUpActivity::class.java) // 회원가입 페이지로 이동 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
개발의 세계에서는 '주석이 필요한 코드는 나쁜 코드이다' 라는 말도 있답니다?!
충분히 의도를 알 수 있는 코드라면 주석을 지워주시는 편이 좋습니다~~!!!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
앞으로는 주석으로 설명하기보단 딱 봐도 아는 코드를 작성하기 위해 노력해야겠습니다!
binding.tvMainName.text = userName | ||
binding.tvMainShowId.text = userId | ||
binding.tvMainShowPw.text = userPw | ||
binding.tvMainShowPlace.text = userPlace |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아린님 PR 읽어보시면서 with(binding)을 찾아보세요!!
if (binding.etSignUpId.text.length in 6..10 && | ||
binding.etSignUpPw.text.length in 8..12 && |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
6, 8, 10, 12와 같은 상수는 다른 사람들이 어떤 뜻인지 알아보기 어려워요!
const val이 뭔지 아시나요? 아린님 PR 코드리뷰처럼, 미리 컴파일하는 상수를 정해두는 방식이죠~~
상수마다 이름이 붙어있기 때문에 가독성을 높일 수 있어요!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const val을 이용해서 이 상수들이 왜 나왔는지 MIN_LENGTH_ID 등으로 의미를 알게 해준걸 보고왔어요! 이런 비즈니스 로직들을 분리해서 따로 관리하게 하면 나중에 수정하기도 더 용이할 것 같다는 생각이 들었는데 어떻게 생각하세요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
크 엄청나게 예리하시군요~~ 2주차때 배운 viewModel을 더욱 잘 활용하시게 된다면 가능하실거예요 👍
intent.putExtra("ID",binding.etSignUpId.text.toString()) | ||
intent.putExtra("PW",binding.etSignUpPw.text.toString()) | ||
intent.putExtra("Name",binding.etSignUpName.text.toString()) | ||
intent.putExtra("Place",binding.etSignUpPlace.text.toString()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이친구도 with으로 묶이는거 아시나요?
Toast.makeText(this, "입력하지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show() | ||
} | ||
|
||
else | ||
Toast.makeText(this,"회원가입 실패",Toast.LENGTH_SHORT).show() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
하드코딩된 문자열을 사용하면 어떤 문제가 있을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다국어 번역 등 유지보수에 관한 문제점, 나아가 보안성 문제까지..! 직관적이라는 장점이 있긴 하지만 사용에 유의할 점이 굉장히 많네요!
app:layout_constraintTop_toBottomOf="@+id/tvMainShowId" | ||
app:layout_constraintStart_toStartOf="parent"/> | ||
|
||
<TextView |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
과제 조건에도 있었답니다?!
tools:layout_editor_absoluteX="42dp" | ||
tools:layout_editor_absoluteY="433dp" /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
지워주세용 :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
꼼꼼히 확인하겠습니다 😂
// 1. 모든 정보 입력되지 않았을 시, 회원 가입 불가 (snackbar , toast 등으로 메세지 표시) | ||
// 2. 성공 시 LoginActivity로 화면 전환, 정보도 함께 전달, 회원가입 성공 메세지 표시 | ||
// <회원가입 성공조건> | ||
// - ID : 6~10 글자 | ||
// - Password : 8~12 글자 | ||
// - 닉네임 : 한 글자 이상, 공백으로만 이루어진 닉네임은 불가 | ||
// - 나머지 조건 : 자유 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이친구도 이슈와 피알에서 다 명시가 되어있죠?!
꼼꼼하게 체크하는 모습 좋습니다~~👍 벗 불필요해진 주석은 지워주세요!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
불필요한 주석 지양하겠습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
너무 잘하셨네요! 좋은 코드 잘봤습니당 :) 코드 작성할 때 코드 재정렬 단축키 한 번씩 사용해주시면 더 보기 좋은 코드가 될 것 같네요. 상수화나 함수화도 시도해 보시길!
binding.btnSignIn.setOnClickListener { | ||
if (binding.etSignInId.text.toString()== userId) { | ||
if (binding.etSignInPw.text.toString() == userPw) { | ||
Toast.makeText(this, "로그인 되었습니다!", Toast.LENGTH_SHORT).show() | ||
|
||
val intent = Intent(this,MainActivity::class.java) // 메인 페이지로 이동 | ||
intent.putExtra("ID",userId) | ||
intent.putExtra("PW",userPw) | ||
intent.putExtra("Name",userName) | ||
intent.putExtra("Place",userPlace) | ||
startActivity(intent) | ||
} | ||
else | ||
Toast.makeText(this, "비밀번호가 잘못되었습니다", Toast.LENGTH_SHORT).show() | ||
} | ||
else { | ||
Toast.makeText(this, "아이디가 잘못되었습니다!", Toast.LENGTH_SHORT).show() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
각 기능마다 함수로 분리하는 것도 좋은 방법이예요! 그렇게 하면 가독성이 좋아지고 유지 보수하기 수월해지거든요. 함수명은 이름만 보더라도 어떤 기능을 수행하는 메서드인지 명확하게 알 수 있어야 좋습니당.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그러면 isIdValid(), isPwValid() 같은 유효성 검증 메서드들로 분리해서 작성하면setOnClickListener() 블럭 안쪽 가독성을 높일 수 있겠네요!
binding.btnJoin.setOnClickListener { | ||
val intent = Intent(this,SignUpActivity::class.java) // 회원가입 페이지로 이동 | ||
startActivity(intent) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요 친구도 함수로 분리해내면 좋을 것 같아요! btnJoin 버튼을 클릭했을 때 수행되는 함수!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
회원가입 페이지로 이동하는 2줄 함수말고는 별다른 추가사항이 없을 듯한데 그래도 함수로 분리해내서 가독성을 높여주는게 더 좋을까요? 아니면 페이지 이동 기능을 가진 함수를 작성해서 재사용을 하라는 뜻,,? 어떻게 분리해내야 될 지 궁금합니다..!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
흠 현재 구현되어 있는 부분에서는 SignUpActivity로 이동할 때는 result를 사용해야 하니 전자가 맞다고 생각해요! 몇 줄 없는 코드일지라도 함수로 분리해내면 어떤 역할을 하는지 확실하게 알 수 있어서 좋습니다! 확장성에서도 좋구요~ 버튼 클릭 기능별로 함수화 해주는게 일반적인 것 같아요!
@@ -5,11 +5,24 @@ import androidx.activity.enableEdgeToEdge | |||
import androidx.appcompat.app.AppCompatActivity | |||
import androidx.core.view.ViewCompat | |||
import androidx.core.view.WindowInsetsCompat | |||
import com.sopt.now.databinding.ActivityLoginBinding |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 파일에도 이 import가 사용되는 부분이 있을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
로그인 시 받은 정보를 메인화면으로 가져와야해서 혹시 LoginActivity databinding 도 해줘야하지 않을까 싶었는데 지워도 잘 구동하네요 (무분별한 alt+enter 사례 2,,!)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MainActivity에서는 ActivityMainBinding만 사용하니까요!
binding.tvMainName.text = userName | ||
binding.tvMainShowId.text = userId | ||
binding.tvMainShowPw.text = userPw | ||
binding.tvMainShowPlace.text = userPlace |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요롷게 textView 값을 넣는 함수로 빼내면 좋을 것 같습니다.
android:layout_marginTop="40dp"/> | ||
|
||
<ImageView | ||
android:id="@+id/imgMainProfile" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
imageView의 경우에는 iv~로 많이 씁니당. 보통 뷰 네임의 대문자를 따서 지어요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 뭐로 줄여야할지 고민했었는데 뷰 네임 대문자가 기준이였군요!!! 막힌 혈이 뜷렸습니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사소하게라도 헷갈리거나 궁금한게 있다면 바로 오비한테 물어보세욧~~!
android:layout_marginStart="20dp" | ||
app:layout_constraintTop_toTopOf="@+id/tvMainSopt" | ||
app:layout_constraintStart_toStartOf="parent" | ||
app:srcCompat="@drawable/ic_launcher_background" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
원하시는 사진으로 drawable에 추가해서 교체해주면 좋을 것 같네요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
실은 사진 추가하는 것까지는 아직 엄두를 못냈었는데 2주차 세미나를 통해 drawable 부분을 이용하는 법을 알게돼서 이제는 추가해볼 수 있을거 같습니다!
app:layout_constraintTop_toTopOf="@+id/tvMainSopt" | ||
app:layout_constraintStart_toStartOf="parent" | ||
app:srcCompat="@drawable/ic_launcher_background" | ||
app:layout_constraintDimensionRatio="2:1" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
호오 2:1 비율을 원하신건가요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
과제 명세때문에 사용해본다고 이 숫자 저 숫자 집어넣어보면서 바뀌는건 확인했는데 아직 추가 학습이 필요할 것 같습니다 ! 😂
tools:layout_editor_absoluteX="42dp" | ||
tools:layout_editor_absoluteY="433dp" /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오잉 tools는 실제로 동작했을 때는 적용되어 보이지 않아요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
꼼꼼히 확인하겠습니다 2..!😂
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pending 해제하는 법 이제 알아서 이제야 review 답장을 보내는 감자돌이..
binding.btnSignIn.setOnClickListener { | ||
if (binding.etSignInId.text.toString()== userId) { | ||
if (binding.etSignInPw.text.toString() == userPw) { | ||
Toast.makeText(this, "로그인 되었습니다!", Toast.LENGTH_SHORT).show() | ||
|
||
val intent = Intent(this,MainActivity::class.java) // 메인 페이지로 이동 | ||
intent.putExtra("ID",userId) | ||
intent.putExtra("PW",userPw) | ||
intent.putExtra("Name",userName) | ||
intent.putExtra("Place",userPlace) | ||
startActivity(intent) | ||
} | ||
else | ||
Toast.makeText(this, "비밀번호가 잘못되었습니다", Toast.LENGTH_SHORT).show() | ||
} | ||
else { | ||
Toast.makeText(this, "아이디가 잘못되었습니다!", Toast.LENGTH_SHORT).show() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그러면 isIdValid(), isPwValid() 같은 유효성 검증 메서드들로 분리해서 작성하면setOnClickListener() 블럭 안쪽 가독성을 높일 수 있겠네요!
if (binding.etSignInId.text.toString()== userId) { | ||
if (binding.etSignInPw.text.toString() == userPw) { | ||
Toast.makeText(this, "로그인 되었습니다!", Toast.LENGTH_SHORT).show() | ||
|
||
val intent = Intent(this,MainActivity::class.java) // 메인 페이지로 이동 | ||
intent.putExtra("ID",userId) | ||
intent.putExtra("PW",userPw) | ||
intent.putExtra("Name",userName) | ||
intent.putExtra("Place",userPlace) | ||
startActivity(intent) | ||
} | ||
else | ||
Toast.makeText(this, "비밀번호가 잘못되었습니다", Toast.LENGTH_SHORT).show() | ||
} | ||
else { | ||
Toast.makeText(this, "아이디가 잘못되었습니다!", Toast.LENGTH_SHORT).show() | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
링크 참고하니까 로그인 유효성을 검증하는 함수 isValidId() 등을 만들어서 return 문을 이용하면 훨씬 간결한 코드로 작성 가능하다는게 확 와닿네요!
} | ||
|
||
binding.btnJoin.setOnClickListener { | ||
val intent = Intent(this,SignUpActivity::class.java) // 회원가입 페이지로 이동 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
앞으로는 주석으로 설명하기보단 딱 봐도 아는 코드를 작성하기 위해 노력해야겠습니다!
android:layout_height="wrap_content" | ||
android:layout_marginTop="50dp" | ||
android:gravity="center" | ||
android:text="Welcome to SOPT" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
하드코딩 된 문자열에 alt+shift+enter를 눌렀더니 strings.xml로 추출이 되네요! 확실하게 배워갑니다!
android:layout_height="match_parent"> | ||
|
||
<TextView | ||
android:id="@+id/tvSignInTitle" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
실습 때 Login으로 해놓고 과제 명세를 보고 난 후에는 SignIn으로 혼용해서 썼더니 헷갈릴 수 있겠네요.. Join 이랑 SignUp도 같은 맥락인 것 같은데 다음부턴 신경써야겠습니다!
Toast.makeText(this, "입력하지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show() | ||
} | ||
|
||
else | ||
Toast.makeText(this,"회원가입 실패",Toast.LENGTH_SHORT).show() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다국어 번역 등 유지보수에 관한 문제점, 나아가 보안성 문제까지..! 직관적이라는 장점이 있긴 하지만 사용에 유의할 점이 굉장히 많네요!
binding.tvMainName.text = userName | ||
binding.tvMainShowId.text = userId | ||
binding.tvMainShowPw.text = userPw | ||
binding.tvMainShowPlace.text = userPlace |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
with(binding) 블럭으로 묶는거 잘 보고왔습니다 ^^
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
좋아요~~ 발전해나가봅시다
if (binding.etSignUpId.text.length in 6..10 && | ||
binding.etSignUpPw.text.length in 8..12 && |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
크 엄청나게 예리하시군요~~ 2주차때 배운 viewModel을 더욱 잘 활용하시게 된다면 가능하실거예요 👍
val intent = Intent(this,LoginActivity::class.java) // 회원가입 성공 시, 로그인 화면으로 이동 | ||
// 회원가입 정보 넘기기 | ||
intent.putExtra("ID",binding.etSignUpId.text.toString()) | ||
intent.putExtra("PW",binding.etSignUpPw.text.toString()) | ||
intent.putExtra("Name",binding.etSignUpName.text.toString()) | ||
intent.putExtra("Place",binding.etSignUpPlace.text.toString()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사실 data class나 bundle을 이용하시는게 좋긴 한데!! 현재 이해가 안가신다면 일단 보류하셔도 좋아요~~!!!!
Related issue 🛠
Work Description ✏️
Screenshot 📸
1._XML_.mp4
Uncompleted Tasks 😅
registerForActivityResult
기능 미사용dimensionRatio
기능 추가 학습 필요To Reviewers 📢
문법, 가독성, 기능 등등.. 정말 많이 부족함을 느꼈습니다.. ㅜ
첫 과제 정말 정신없고 어렵지만 재밌기도 했습니다!
PR 올리기도 민망한 엉망진창 코드이지만
부족한 점 왕창 달아주시면 하나하나 다 공부해보겠습니다
정진 더 정진..!