Skip to content
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

Merged
merged 26 commits into from
Apr 15, 2024

Conversation

SYAAINN
Copy link
Collaborator

@SYAAINN SYAAINN commented Apr 5, 2024

Related issue 🛠

Work Description ✏️

  • 로그인 페이지 구현
  • 회원가입 페이지 구현
  • 회원가입 정보를 바탕으로 로그인 기능 구현
  • 메인화면에 회원정보 출력 기능 구현

Screenshot 📸

1._XML_.mp4

Uncompleted Tasks 😅

  • 회원정보 저장 및 전달 과정에서 registerForActivityResult 기능 미사용
  • 회원가입 시 입력과정에서 enter키를 누르면 줄바꿈이 일어남
  • 예외 처리 빈약
  • 이미지 첨부 기능 미사용
  • dimensionRatio 기능 추가 학습 필요

To Reviewers 📢

문법, 가독성, 기능 등등.. 정말 많이 부족함을 느꼈습니다.. ㅜ
첫 과제 정말 정신없고 어렵지만 재밌기도 했습니다!
PR 올리기도 민망한 엉망진창 코드이지만
부족한 점 왕창 달아주시면 하나하나 다 공부해보겠습니다
정진 더 정진..!

@SYAAINN SYAAINN added the 📗[필수 과제] 세미나_필수과제 label Apr 5, 2024
@SYAAINN SYAAINN requested a review from a team April 5, 2024 08:47
@SYAAINN SYAAINN self-assigned this Apr 5, 2024
@SYAAINN SYAAINN changed the base branch from main-xml to develope-xml April 5, 2024 08:48
@SYAAINN SYAAINN changed the title Feat/week xml1 [1주차/필수] Android UI 기초 : 회원가입 및 로그인 구현 Apr 5, 2024
@SYAAINN SYAAINN changed the title [1주차/필수] Android UI 기초 : 회원가입 및 로그인 구현 [1주차/필수] Android UI 구현 기초 : 회원가입 및 로그인 Apr 5, 2024
@SYAAINN SYAAINN changed the title [1주차/필수] Android UI 구현 기초 : 회원가입 및 로그인 [1주차/필수/XML] Android UI 구현 기초 : 회원가입 및 로그인 Apr 5, 2024
Copy link
Member

@arinming arinming left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

놀랍게도 깔끔한.... 수고 많으셨어용 같이 성장 레쭈고 으썃

Comment on lines +23 to +26
binding.tvMainName.text = userName
binding.tvMainShowId.text = userId
binding.tvMainShowPw.text = userPw
binding.tvMainShowPlace.text = userPlace
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요기 제가 준서님한테 리뷰받았는데 같이 참고해주시면 좋을 듯 합니다 ㅎㅎ

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아린님 PR 읽어보시면서 with(binding)을 찾아보세요!!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with(binding) 블럭으로 묶는거 잘 보고왔습니다 ^^

Comment on lines +25 to +28
if (binding.etSignUpId.text.length in 6..10 &&
binding.etSignUpPw.text.length in 8..12 &&
binding.etSignUpName.text.isNotEmpty() &&
binding.etSignUpPlace.text.isNotEmpty()) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

조건문 너무 길어지면 함수로 빼는게 가독성면에서 보기 좋아욥!

Copy link
Collaborator Author

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"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

하드코딩 된 text는 string value로 빼는 습관을 들여두는 거 어떨까여!

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

텍스트 위에 살짝 마우스 올리면 스트링으로 뺄 수 있게 뜰거예용!! 그렇게 추가하면 됩니당

Copy link
Collaborator Author

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

인풋타입 패스워드 써보시면 ..!🤩

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

과제 조건에도 있었답니다?!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MainActivity 에는 비밀번호가 안보이게 하라는 과제 명세가 없었던거 같아서 로그인과 회원가입 시에만 구현을 해놨네요! 생각해보니까 비밀번호 그냥 보여주는게 이상한거 같기도..?

Copy link

@yeonjeen yeonjeen left a 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"/>
Copy link

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"
Copy link

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"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아이디 이름 설정을 명확하게 아주 잘 정하셨네용?! 완전 굿굿

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

준서형의 꿀팁 전수가 있었습니다 ^^

Copy link
Member

@junseo511 junseo511 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이사람 못한다는거 다 기믹이었어...? 왜잘해 🧐

Comment on lines +24 to +40
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()
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

객체 지향 생활 체조 원칙 제 2항 : else 예약어를 쓰지 않는다

위 링크 참고하시면 좋을거같아요 👍👍

Copy link
Collaborator Author

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) // 회원가입 페이지로 이동
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개발의 세계에서는 '주석이 필요한 코드는 나쁜 코드이다' 라는 말도 있답니다?!

충분히 의도를 알 수 있는 코드라면 주석을 지워주시는 편이 좋습니다~~!!!!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앞으로는 주석으로 설명하기보단 딱 봐도 아는 코드를 작성하기 위해 노력해야겠습니다!

Comment on lines +23 to +26
binding.tvMainName.text = userName
binding.tvMainShowId.text = userId
binding.tvMainShowPw.text = userPw
binding.tvMainShowPlace.text = userPlace
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아린님 PR 읽어보시면서 with(binding)을 찾아보세요!!

Comment on lines +25 to +26
if (binding.etSignUpId.text.length in 6..10 &&
binding.etSignUpPw.text.length in 8..12 &&
Copy link
Member

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 코드리뷰처럼, 미리 컴파일하는 상수를 정해두는 방식이죠~~

상수마다 이름이 붙어있기 때문에 가독성을 높일 수 있어요!!

Copy link
Collaborator Author

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 등으로 의미를 알게 해준걸 보고왔어요! 이런 비즈니스 로직들을 분리해서 따로 관리하게 하면 나중에 수정하기도 더 용이할 것 같다는 생각이 들었는데 어떻게 생각하세요?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

크 엄청나게 예리하시군요~~ 2주차때 배운 viewModel을 더욱 잘 활용하시게 된다면 가능하실거예요 👍

Comment on lines +34 to +37
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())
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이친구도 with으로 묶이는거 아시나요?

Comment on lines +42 to +46
Toast.makeText(this, "입력하지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show()
}

else
Toast.makeText(this,"회원가입 실패",Toast.LENGTH_SHORT).show()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

하드코딩된 문자열을 사용하면 어떤 문제가 있을까요?

Copy link
Collaborator Author

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

과제 조건에도 있었답니다?!

Comment on lines +96 to +97
tools:layout_editor_absoluteX="42dp"
tools:layout_editor_absoluteY="433dp" />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지워주세용 :)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

꼼꼼히 확인하겠습니다 😂

Comment on lines +18 to +24
// 1. 모든 정보 입력되지 않았을 시, 회원 가입 불가 (snackbar , toast 등으로 메세지 표시)
// 2. 성공 시 LoginActivity로 화면 전환, 정보도 함께 전달, 회원가입 성공 메세지 표시
// <회원가입 성공조건>
// - ID : 6~10 글자
// - Password : 8~12 글자
// - 닉네임 : 한 글자 이상, 공백으로만 이루어진 닉네임은 불가
// - 나머지 조건 : 자유
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이친구도 이슈와 피알에서 다 명시가 되어있죠?!

꼼꼼하게 체크하는 모습 좋습니다~~👍 벗 불필요해진 주석은 지워주세요!!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

불필요한 주석 지양하겠습니다!

Copy link
Member

@Eonji-sw Eonji-sw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

너무 잘하셨네요! 좋은 코드 잘봤습니당 :) 코드 작성할 때 코드 재정렬 단축키 한 번씩 사용해주시면 더 보기 좋은 코드가 될 것 같네요. 상수화나 함수화도 시도해 보시길!

Comment on lines +23 to +39
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()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

각 기능마다 함수로 분리하는 것도 좋은 방법이예요! 그렇게 하면 가독성이 좋아지고 유지 보수하기 수월해지거든요. 함수명은 이름만 보더라도 어떤 기능을 수행하는 메서드인지 명확하게 알 수 있어야 좋습니당.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그러면 isIdValid(), isPwValid() 같은 유효성 검증 메서드들로 분리해서 작성하면setOnClickListener() 블럭 안쪽 가독성을 높일 수 있겠네요!

Comment on lines +43 to +46
binding.btnJoin.setOnClickListener {
val intent = Intent(this,SignUpActivity::class.java) // 회원가입 페이지로 이동
startActivity(intent)
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요 친구도 함수로 분리해내면 좋을 것 같아요! btnJoin 버튼을 클릭했을 때 수행되는 함수!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

회원가입 페이지로 이동하는 2줄 함수말고는 별다른 추가사항이 없을 듯한데 그래도 함수로 분리해내서 가독성을 높여주는게 더 좋을까요? 아니면 페이지 이동 기능을 가진 함수를 작성해서 재사용을 하라는 뜻,,? 어떻게 분리해내야 될 지 궁금합니다..!

Copy link
Member

@Eonji-sw Eonji-sw Apr 9, 2024

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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 파일에도 이 import가 사용되는 부분이 있을까요?

Copy link
Collaborator Author

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,,!)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MainActivity에서는 ActivityMainBinding만 사용하니까요!

Comment on lines +23 to +26
binding.tvMainName.text = userName
binding.tvMainShowId.text = userId
binding.tvMainShowPw.text = userPw
binding.tvMainShowPlace.text = userPlace
Copy link
Member

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"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

imageView의 경우에는 iv~로 많이 씁니당. 보통 뷰 네임의 대문자를 따서 지어요!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 뭐로 줄여야할지 고민했었는데 뷰 네임 대문자가 기준이였군요!!! 막힌 혈이 뜷렸습니다

Copy link
Member

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"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

원하시는 사진으로 drawable에 추가해서 교체해주면 좋을 것 같네요!

Copy link
Collaborator Author

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"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

호오 2:1 비율을 원하신건가요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

과제 명세때문에 사용해본다고 이 숫자 저 숫자 집어넣어보면서 바뀌는건 확인했는데 아직 추가 학습이 필요할 것 같습니다 ! 😂

Comment on lines +96 to +97
tools:layout_editor_absoluteX="42dp"
tools:layout_editor_absoluteY="433dp" />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오잉 tools는 실제로 동작했을 때는 적용되어 보이지 않아요

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

꼼꼼히 확인하겠습니다 2..!😂

app/src/main/res/layout/activity_login.xml Show resolved Hide resolved
Copy link
Collaborator Author

@SYAAINN SYAAINN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pending 해제하는 법 이제 알아서 이제야 review 답장을 보내는 감자돌이..

Comment on lines +23 to +39
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()
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그러면 isIdValid(), isPwValid() 같은 유효성 검증 메서드들로 분리해서 작성하면setOnClickListener() 블럭 안쪽 가독성을 높일 수 있겠네요!

Comment on lines +24 to +40
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()
}
Copy link
Collaborator Author

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) // 회원가입 페이지로 이동
Copy link
Collaborator Author

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"
Copy link
Collaborator Author

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"
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

실습 때 Login으로 해놓고 과제 명세를 보고 난 후에는 SignIn으로 혼용해서 썼더니 헷갈릴 수 있겠네요.. Join 이랑 SignUp도 같은 맥락인 것 같은데 다음부턴 신경써야겠습니다!

app/src/main/res/layout/activity_login.xml Show resolved Hide resolved
Comment on lines +42 to +46
Toast.makeText(this, "입력하지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show()
}

else
Toast.makeText(this,"회원가입 실패",Toast.LENGTH_SHORT).show()
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

다국어 번역 등 유지보수에 관한 문제점, 나아가 보안성 문제까지..! 직관적이라는 장점이 있긴 하지만 사용에 유의할 점이 굉장히 많네요!

Comment on lines +23 to +26
binding.tvMainName.text = userName
binding.tvMainShowId.text = userId
binding.tvMainShowPw.text = userPw
binding.tvMainShowPlace.text = userPlace
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with(binding) 블럭으로 묶는거 잘 보고왔습니다 ^^

Copy link
Member

@junseo511 junseo511 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋아요~~ 발전해나가봅시다

Comment on lines +25 to +26
if (binding.etSignUpId.text.length in 6..10 &&
binding.etSignUpPw.text.length in 8..12 &&
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

크 엄청나게 예리하시군요~~ 2주차때 배운 viewModel을 더욱 잘 활용하시게 된다면 가능하실거예요 👍

Comment on lines +32 to +37
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())
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사실 data class나 bundle을 이용하시는게 좋긴 한데!! 현재 이해가 안가신다면 일단 보류하셔도 좋아요~~!!!!

@SYAAINN SYAAINN merged commit 74faef8 into develope-xml Apr 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[1주차/XML] Android UI 구현 기초
5 participants