오늘은 개인과제를 시작하였다.
프로젝트의 이름을 SignInActivity로 바꾸고 아이디, 비밀번호는 EditText로
비밀번호는 입력내용이 가려지게 xml을 작성해주었다.
프로젝트의 이름은 Refactor/Rename을 통해 바꿔주었다.

그 다음은 EditText를 포함한 UI를 설정해주었다.
<EditText
android:id="@+id/edit_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="10dp"
android:hint="아이디를 입력하세요."
android:textColorHint="#616161"
android:textColor="@color/white"
android:background="@android:color/transparent"
app:layout_constraintTop_toBottomOf="@+id/text_id"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
아이디를 받는 EditText
<EditText
android:id="@+id/edit_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="10dp"
android:hint="비밀번호를 입력하세요."
android:textColorHint="#616161"
android:textColor="@color/white"
android:background="@android:color/transparent"
android:inputType="textPassword"
app:layout_constraintTop_toBottomOf="@+id/text_password"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
비밀번호를 받는 EditText
입력내용은 inputType으로 textPassword로 설정해주면 가려진다.
그 다음 내용은 기능적인 내용이다.
(다른건 괜찮았는데 아이디 넘겨주는 부분에서 뇌가 멈출뻔했다...)
로그인 버튼을 누르면 HomeActivity가 실행되도록 구현
val btn_in1 = findViewById<Button>(R.id.btn_in1) btn_in1.setOnClickListener { val intent = Intent(this, HomeActivity::class.java) startActivity(intent) }
- findViewById로 btn_in1(로그인 버튼)을 가져오고 btn_in1을 누를때 intent로
지금 activity에서 HomeActivity로 보내준다.
아이디/비밀번호 모두 입력 되어야만 로그인 버튼이 눌리도록 구현
btn_in1.setOnClickListener { //아이디 입력 EditText가 비어있을 때 if (id.text.toString().trim().isEmpty()) { Toast.makeText(this@SignInActivity, "아이디를 확인해주세요", Toast.LENGTH_SHORT).show() //비밀번호 입력 EditText가 비어있을 때 } else if (password.text.toString().trim().isEmpty()) { Toast.makeText(this@SignInActivity, "비밀번호를 확인해주세요", Toast.LENGTH_SHORT).show() }
- 버튼을 누를때 if문을 통해 각 EditText가 비어있으면 토스트 메세지 출력해준다.
회원가입 버튼을 누르면 SignUpActivity가 실행되도록 구현
btn_in2.setOnClickListener { val intent = Intent(this, SignUpActivity::class.java) startActivity(intent) }
- 이 부분도 로그인 버튼과 동일하다.
Extra로 아이디 넘겨주기
else { Toast.makeText(this@SignInActivity, "로그인 성공", Toast.LENGTH_SHORT).show() val intent = Intent(this, HomeActivity::class.java) //val inputId는 EditText id에서 받아온 text를 toString으로 바꿔서 val inputId = id.text.toString() //intent 보내준다 intent.putExtra("", inputId) startActivity(intent)
- intent.putExtra로 id(아이디를 적는 EditText)를 HomeActivity로 보내면
if(intent.hasExtra("")) { text_id.text = intent.getStringExtra("")
- 안의 값이 맞으면(?) getStringExtra로 받아온다.

SignActivity를 생성하고 이름, 아이디, 비밀번호 모두 입력시 회원가입 버튼이 눌리도록 구현.
회원가입 버튼이 눌리면 초기화면으로 이동(finish 활용)
첫번째 조건은 SignInActivity에서 경험해봐서 바로 if 활용해서 작성했다.
btn_up.setOnClickListener { if (edit1.text.toString().trim().isEmpty()) { Toast.makeText(this@SignUpActivity, "입력되지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show() } else if (edit2.text.toString().trim().isEmpty()) { Toast.makeText(this@SignUpActivity, "입력되지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show() } else if (edit3.text.toString().trim().isEmpty()) { Toast.makeText(this@SignUpActivity, "입력되지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show() } //3가지 EditText가 전부 제대로 입력되었다면 Toast 메세지와 함께 현재화면이 종료된다. else { Toast.makeText(this@SignUpActivity, "회원가입이 완료되었습니다.", Toast.LENGTH_SHORT).show() finish() } }
- 버튼이 눌렸을때 정보가 비어있으면 토스트 메세지를 출력하고 전부 입력시 else를 통해 빠져나간다.

HomeActivity를 생성, SignInActivity에서 받은 extra data(아이디)를 화면에 표시(완.)
mageView, TextView 외에 각종 Widget을 활용해 자유롭게 화면을 디자인
종료 버튼이 눌리면 SignInActivity로 이동하도록 구현합니다. (finish 활용)
extra data 제외하면 다 경험해본 것이라서 바로 했다!
when문을 이용해 추가 기능하나도 구현했다
(자기소개 페이지가 시작될 때 5장 중 랜덤으로 1장의 사진이 표시되도록 구현합니다.)
btn_finish.setOnClickListener { finish() }
- 종료버튼
val imageView = findViewById<ImageView>(R.id.img3) when(Random.nextInt(5)) { 0 -> imageView.setImageResource(R.drawable.randompic1) 1 -> imageView.setImageResource(R.drawable.randompic2) 2 -> imageView.setImageResource(R.drawable.randompic3) 3 -> imageView.setImageResource(R.drawable.randompic4) 4 -> imageView.setImageResource(R.drawable.randompic5) }
- 추가기능





(extra 제외하면 막힌부분은 없었던 것 같다 처음에 화면꺼지는 정도...? intent값을 너무 일찍 넣어 버리니까 메세지가 떠도 화면이 넘어가서 당황했는데 if문으로 살아남았다.)
과제를 생각보다 빨리 마무리지어서 다음주에도 계속 보완하고 기능 추가하고 해보고 싶다.
문법주차와는 다르게 뭔가 만든다는 느낌이 들어서 그런지 재미있다!
운동가야겠다. 오늘은 어깨!