반응형
데이터 전달이 원하는 대로 작동하지 않는 경우 몇 가지 확인해야 할 사항이 있습니다:
- 데이터 전달 코드: bundle.putParcelable("calendarModel", calendarModel)와 같이 데이터를 번들에 올바르게 추가했는지 확인하세요. calendarModel은 Parcelable을 구현하고 있어야 합니다.
- 데이터 수신 코드: CalendarEditDialogFragment에서 데이터를 올바르게 수신하고 있는지 확인하세요. 데이터를 추출하는 부분이 정확해야 합니다.
- 프래그먼트 관리: 프래그먼트 관리자를 사용하여 프래그먼트를 표시하고, 올바른 프래그먼트 매니저를 사용하고 있는지 확인하세요. 예를 들어 parentFragmentManager를 사용하고 있는데, 이것이 바람직한 프래그먼트 매니저인지 확인하세요.
- 프래그먼트 라이프사이클: 프래그먼트 라이프사이클 상태에 따라 데이터 전달을 수행해야 합니다. 데이터를 전달하는 코드가 프래그먼트가 올바른 상태에 있을 때 실행되는지 확인하세요.
데이터 전달 시 fragment와 dialog사이에 수신 여부를 확인하는 코드를 작성해야 되는데 쉽지가 않았다.
bundle로 해결해보려 했으나 resultfragmentlistener로 구현해보기로 하였습니다.
val bundle = Bundle()
bundle.putParcelable("calendarModel", calendarModel)
parentFragmentManager.setFragmentResult("request_key", bundle)
editDialogFragment.arguments = bundle
editDialogFragment.show(parentFragmentManager, editDialogFragment.tag)
fragment에서 bundle로 데이터 보내는 코드이다.
editdialog에 데이터를 보내고 싶을때
받을때 코드 이다.
val calendarModel = arguments?.getParcelable<CalendarModel>("calendarModel")
if (calendarModel != null) {
val memoText = calendarModel.memo
val place = calendarModel.place
val schedule = calendarModel.schedule
binding.edtCalendarEditMemo.setText(memoText)
binding.edtCalendarEditPlace.setText(place)
binding.edtCalendarEditSchedule.setText(schedule)
}
kotlin.UninitializedPropertyAccessException: lateinit property binding has not been initialized
at CalendarAddDialogFragment.onViewCreated(CalendarAddDialogFragment.kt:51)
반응형
'개발일기' 카테고리의 다른 글
23.11.3 114일차 개발일기 [Android] tostring으로 데이터 넘기고 받기 (0) | 2023.11.03 |
---|---|
23.11.2 113일차 개발일기 [Android] EditText 테두리 만들기 (0) | 2023.11.02 |
23.10.31 111일차 개발일기 pull은 push하고 pr한 다음에 웬만하면 할것! (0) | 2023.10.31 |
23.10.19 99일차 google 인증 자료 사이트 출처 com.google.android.gms.common.api.ApiException: 10 (2) | 2023.10.19 |
23.10.18 98일차 Firebase.auth unresolved, debug.keystore 위치찾기 (0) | 2023.10.18 |