728x90
🟦 35강. 회원가입 화면 구성
▶️ ‘회원 가입’ 화면 구성
- 로그인 화면 속 ‘회원가입’ 버튼 클릭 시, → 회원가입 화면으로 전환
- 사용자로부터 아이디와 비밀번호만 입력받음
- ‘다음’ 버튼 클릭 시, → 닉네임 설정 화면으로 전환
◾ JoinFragment.kt
package com.example.app3_communityapp
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
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{
val act =activityas MainActivity
act.fragmentController("nick_name", true, true)
}
return joinFragmentBinding.root
}
}
▶️ ‘닉네임 입력’ 화면 구성
- 닉네임 입력 후 ‘가입 완료’ 버튼 클릭 시, → 로그인 화면으로 전환
◾NickNameFragment.kt
package com.example.app3_communityapp
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
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= "닉네임 설정"
return nickNameFragmentBinding.root
}
}
◾MainActivity.kt
- 이 액티비티 객체 속에 만들어뒀던 fragmentController()
class MainActivity : AppCompatActivity() { //'메인' 액티비티
//바인딩 설정
lateinit var mainActivityBinding : ActivityMainBinding
// 프래그먼트 담을 변수 선언
lateinit var currentFragment : Fragment
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mainActivityBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(mainActivityBinding.root)
//프래그먼트 컨트롤 메소드
fragmentController("login", false, false)
}
//이 메인 액티비티가 관리할 프래그먼트 화면들을 컨트롤할 메소드
// (프래그먼트 이름/ 백 스택에 추가 여부 / 애니메이션 동작 사용 여부)
fun fragmentController(name:String, add:Boolean, animate:Boolean) {
//1) 띄울 프래그먼트 이름받아서 생성
when(name) {
"login" -> {
currentFragment = LoginFragment()
}
"join" -> {
currentFragment = JoinFragment()
}
"nick_name" -> {
currentFragment = NickNameFragment()
}
}
//트랜잭션으로 띄울 현재의 프래그먼트 띄움
val trans =supportFragmentManager.beginTransaction()
trans.replace(R.id.main_container, currentFragment)
//2) 백 스택에 추가 여부 따라서 ("뒤돌아가기 기능"동작 위해서 사용) - T: 뒤로가기 F:종료
if(add == true) {
trans.addToBackStack(name)
}
//3) 애니메이션 사용 여부에 따라서
if(animate == true) {
trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
}
trans.commit() // 프래그먼트 동적 제어 - 화면에 위의 상황을 적용하는 메소드
}
}
🟧 ‘닉네임 설정’ 버튼 후 → 액티비티 완전 종료 처리
- 현재 앱은 로그인 시도 or 회원가입 시도 후 닉네임 설정까지 완료되면 ‘뒤로 가기’ 버튼 눌러도 완전히 새로운 액티비티 창을 켜야 하기 때문
// 백 스택에 저장된 프래그먼트들을 완전히 종료하기 위함 // 로그인 시도가 완료된 뒤에는 '뒤로가기' 를 눌러도 액티비티가 종료되어야 한다. nickNameFragmentBinding.nicknameJoinBtn.setOnClickListener{ val mainIntent = Intent(requireContext(), MainActivity::class.java) startActivity(mainIntent) activity?.finish() }
- ◾NickNameFragment.kt 속 onCreateView() 메소드 내부
🟧 ‘로그인’ 버튼 클릭 시 → 액티비티 완전 종료 처리
- ‘로그인’ 버튼 클릭 후에는 ‘게시판 메인’ 액티비티로 새롭게 화면 전환되어야 함.
- ◾LoginFragment.kt 속 onCreateView() 메소드 내부에 추가
// '로그인' 버튼 클릭 시, 이벤트 처리 :
loginFragmentBinding.loginLoginbtn.setOnClickListener{
val boardMainIntent = Intent(requireContext(), BoardMainActivity::class.java)
startActivity(boardMainIntent)
activity?.finish()
}
728x90
'App(앱)_관련 공부 모음 > [강의] Android_App Project' 카테고리의 다른 글
# PRJ_3. 커뮤니티 게시판 앱_(4) 게시판 항목 RecyclerView (0) | 2022.07.28 |
---|---|
# PRJ_3. 커뮤니티 게시판 앱_(3) 게시판 메인 화면 (0) | 2022.07.28 |
# PRJ_3. 커뮤니티 게시판 앱_(1) 로그인 화면 (0) | 2022.07.27 |
앱_서버 Okhttp 라이브러리 사용을 위한 설정 (0) | 2022.07.18 |
앱_MySQL DB 생성 (0) | 2022.07.18 |