일일회고
프로젝트하느라 TIL 작성하는 것도 까먹었다.
중간중간에 계속 작성해야겠다.
오늘의 키워드
- 가이드 작성
가이드 작성
팀원의 코드 작성을 돕기 위해 데이터 전달 시 짜야한 코드 프레임을 제시해 주었다.
- add contact dialog에서 취소 시 메인으로 돌아가기
private lateinit var callback: OnBackPressedCallback
override fun onAttach(context: Context) {
super.onAttach(context)
callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
(requireActivity() as MainActivity).initViews()
}
}
requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}
override fun onDetach() {
super.onDetach()
callback.remove()
}
- 프래그먼트 간 데이터 전달
- 메인 리사이클러뷰에서 swipe시 데이터 전달 (Call Fragment로)
- onResume 생명주기 메서드에서 setFragmentResultListener로 받을 수 있습니다.
@RequiresApi(Build.VERSION_CODES.TIRAMISU) override fun onResume() { super.onResume() var obj: CallingObject? = null parentFragmentManager.setFragmentResultListener( "callObject", viewLifecycleOwner ){_, bundle-> obj = bundle.getParcelable("model", CallingObject::class.java) } println(obj) // -> 데이터 받는 것 확인 edittext.setText(obj.phoneNumber) }
- contact detail fragment에서는 생명주기 함수에서 아래와 같이 데이터를 받을 수 있습니다.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val data =arguments?.getParcelable<Parcelable>("model") println(data) } or override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val data =arguments?.getParcelable<Parcelable>("model") println(data) // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_contact_detail, container, false) }
- 프래그먼트 간 데이터 전달
- 메인 리사이클러뷰에서 swipe시 데이터 전달 (Call Fragment로)
- onResume 생명주기 메서드에서 setFragmentResultListener로 받을 수 있습니다.
@RequiresApi(Build.VERSION_CODES.TIRAMISU) override fun onResume() { super.onResume() var obj: CallingObject? = null parentFragmentManager.setFragmentResultListener( "callObject", viewLifecycleOwner ){_, bundle-> obj = bundle.getParcelable("model", CallingObject::class.java) } println(obj) // -> 데이터 받는 것 확인 edittext.setText(obj.phoneNumber) }
- contact detail fragment에서는 생명주기 함수에서 아래와 같이 데이터를 받을 수 있습니다.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val data =arguments?.getParcelable<Parcelable>("model") println(data) } or override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val data =arguments?.getParcelable<Parcelable>("model") println(data) // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_contact_detail, container, false) }
- 1번 2번 전송방식이 다른 이유는 1번은 viewpager → viewpager 2번은 viewpager → other fragment여서 전송방식을 다르게 했습니다. (1번에서 bundle을 arguments에 담아 전달해보았는데 안되었음)
'내일배움캠프 7기 > TIL' 카테고리의 다른 글
내일배움캠프 7기 Android TIL 40일차 (2023.09.08) (0) | 2023.09.08 |
---|---|
내일배움캠프 7기 Android TIL 39일차 (2023.09.07) (0) | 2023.09.07 |
내일배움캠프 7기 Android TIL 37일차 (2023.09.05) (0) | 2023.09.05 |
내일배움캠프 7기 Android TIL 36일차 (2023.09.04) (0) | 2023.09.04 |
내일배움캠프 7기 Android TIL 35일차 (2023.09.01) (0) | 2023.09.01 |