728x90
🟦 47강. 회원 가입 기본 기능 구현
▶️ 회원 가입 기본 기능
- 회원 가입 화면에서 아이디/비번/닉네임에 대한 유효성 검사 코드를 작성해준다.
- 우선, 입력하지 않았을 경우의 유효성 검사를 먼저 처리한다.
🟧 1) MainActivity.kt
- 사용자 입력값 id/pw 를 담을 변수를 미리 선언해둔다.
//사용자 정보 담을 변수 선언 - 여기에 데이터 담을 예정
var userId = ""
var userPw = ""
var userNickName = ""
🟧 2) JoinFragment.kt
- 우선 무입력 상태에서 ‘유효성 검사’ 를 실시해야 한다.
- JoinFragment 뷰에서 사용자가 입력한 값들을 toString() 형태로 받아두고,
- 사용자가 ID/PW 입력 없이 ‘회원가입’ 버튼 클릭할 경우,
- 유효성 검사를 거친 뒤 → DIalog 알림을 띄우고 해당 입력란에 Focus()를 마치도록 이벤트 처리를 해둔다.
package com.example.app3_communityapp
import android.content.DialogInterface
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import com.example.app3_communityapp.databinding.FragmentJoinBinding
class JoinFragment : Fragment() { //'회원가입' 프래그먼트
//바인딩 설정
lateinit var joinFragmentBinding : FragmentJoinBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
//바인딩 연결
joinFragmentBinding = FragmentJoinBinding.inflate(inflater)
//프래그먼트 상단 '툴바' title 지정
joinFragmentBinding.joinToolbar.title= "회원가입"
// 회원가입 화면에서 '다음' 버튼 클릭 시 -> 닉네임 설정 화면으로 전환 이벤트 처리
joinFragmentBinding.joinNextBtn.setOnClickListener{
//xml 영역에서 사용자 입력값 ('id/pw') string 형태로 가져옴
val joinId = joinFragmentBinding.joinId.text.toString()
val joinPw = joinFragmentBinding.joinPw.text.toString()
// -> 무입력 상태에 대한 유효성 검사
//ID 입력값에 대하여
//가져온 사용자 입력값이 null 이거나 무입력 상태인 경우, -> (알림) 다이얼로그 띄움
if(joinId == null || joinId.length == 0) {
val dialogBuilder = AlertDialog.Builder(requireContext())
dialogBuilder.setTitle("아이디 입력 오류")
dialogBuilder.setMessage("아이디를 입력해주세요")
dialogBuilder.setPositiveButton("확인"){dialogInterface: DialogInterface, i: Int->
joinFragmentBinding.joinId.requestFocus() //자동으로 아이디 입력란에 포커싱 주게 설정
}
dialogBuilder.show()
return@setOnClickListener //코틀린에서 람다함수 (setOnClickListener)는 return@로 실행 종료시켜준다.
}
//PW 입력값에 대하여
if(joinPw == null || joinPw.length == 0) {
val dialogBuilder = AlertDialog.Builder(requireContext())
dialogBuilder.setTitle("비밀번호 입력 오류")
dialogBuilder.setMessage("비밀번호를 입력해주세요")
dialogBuilder.setPositiveButton("확인"){dialogInterface: DialogInterface, i: Int->
joinFragmentBinding.joinPw.requestFocus()
}
dialogBuilder.show()
return@setOnClickListener
}
//화면 전환 -> 닉네임 설정 화면
val act =activityas MainActivity
//가입화면에서 id/pw 입력 후 전환된 닉네임 입력 프래그먼트에서는 이 데이터값을 서버에 전달할 필요가 있다.
//따라서 여기서 데이터를 임시로 한 번 담아준다.
act.userId = joinId
act.userPw = joinPw
act.fragmentController("nick_name", true, true)
}
return joinFragmentBinding.root
}
}
🟧 3) NickNameFragment.kt
- 사용자가 닉네임 입력하지 않고 확인 누르면, 유효성 검사를 거쳐서 알림이 뜨고 입력란에 자동 포커싱하도록 이벤트 처리.
package com.example.app3_communityapp
import android.content.DialogInterface
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import com.example.app3_communityapp.databinding.FragmentNickNameBinding
class NickNameFragment : Fragment() { // '닉네임 입력' 프래그먼트
//바인딩 설정
lateinit var nickNameFragmentBinding : FragmentNickNameBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
nickNameFragmentBinding = FragmentNickNameBinding.inflate(inflater)
// -> 툴바 제목 설정
nickNameFragmentBinding.nicknameToolbar.title= "닉네임 설정"
// 백 스택에 저장된 프래그먼트들을 완전히 종료하기 위함
// 로그인 시도가 완료된 뒤에는 '뒤로가기' 를 눌러도 액티비티가 종료되어야 한다.
// -> 닉네임 설정 버튼 클릭 시 -> 새로운 주기를 갖는 메인 액티비티를 다시 띄워주어야 함
nickNameFragmentBinding.nicknameJoinBtn.setOnClickListener{
//사용자 입력값 가져오기
val nickNameNickName = nickNameFragmentBinding.nicknameNickname.text.toString()
//유효성 검사
if(nickNameNickName == null || nickNameNickName.length == 0) {
val dialogBuilder = AlertDialog.Builder(requireContext())
dialogBuilder.setTitle("닉네임 입력 오류")
dialogBuilder.setMessage("닉네임을 입력해주세요")
dialogBuilder.setPositiveButton("확인"){dialogInterface: DialogInterface, i: Int->
nickNameFragmentBinding.nicknameNickname.requestFocus()
}
dialogBuilder.show()
return@setOnClickListener
}
//사용자가 여기서 입력한 '닉네임' 데이터도 다시 서버로 보낼 용도로 여기서 담아준다.
val act =activityas MainActivity
act.userNickName = nickNameNickName
Log.d("test", "${act.userId}")
Log.d("test", "${act.userPw}")
Log.d("test", "${act.userNickName}")
val mainIntent = Intent(requireContext(), MainActivity::class.java)
startActivity(mainIntent)
activity?.finish() //기존 액티비티 종료
}
return nickNameFragmentBinding.root
}
}
- 또한, 여기서 입력한 닉네임값과 앞서 입력하여 넘겨받은 ID/PW 값은 서버와 DB에도 보내야 하기 때문에 임시로 담아두고 Log.d로 잘 담겼는지 확인을 거친다.
🟧 최종 실행
🟧 최종 실행 - 닉네임 관련
728x90
'App(앱)_관련 공부 모음 > [강의] Android_App Project' 카테고리의 다른 글
# PRJ_3. 커뮤니티 게시판 앱_(14) 로그인 기본 처리 - 유효성 검사 (0) | 2022.08.04 |
---|---|
# PRJ_3. 커뮤니티 게시판 앱_(13) 회원가입 처리 -> 서버, DB에 저장작업 (0) | 2022.08.03 |
# PRJ_3. 커뮤니티 게시판 앱_(11) Eclipse와 OkHttp라이브러리 (0) | 2022.08.02 |
# PRJ_3. 커뮤니티 게시판 앱_(10) 서버 준비와 DB 생성 (0) | 2022.08.02 |
# PRJ_3. 커뮤니티 게시판 앱_(9) 게시글 수정 화면 구성 (0) | 2022.08.02 |