728x90
반응형
3주차 - Activity/Fragment간 데이터 전달
배운 점
- Fragment 간 Data를 주고 받을 때 FragmentManager에 Bundle로 data를 담아 전달하는 방법만 알고 있었는데, Fragment Result API에 대해 새롭게 알게 되었다.
- 일회성 데이터를 Fragment간 또는 Fragment와 host Activity간 전달하고 싶을 때 사용한다.
- 사용하기 위해 implementation "androidx.fragment:fragment-ktx:1.3.0" 의존성 추가해야한다.
- Fragment 간 data 전달
- Fragment2에서 Fragment1 로 데이터를 전달하는 예시
- Fragment1에 result Listener를 설정, Fragmetn1 FragmentManager에서 setFratmentResultListene() 호출한다.
- Fragment2에 setFragmentResult() API를 이용해 FragmentManager에 같은 requestKey로 result값을 set한다.
- HostActivity에서 data 받기
- supportFragmentManager 를 get해서 받아와 setFragmentResultListener를 설정해 값을 받아온다.
- 아래 코드는 해당 리스너 부분이다.
supportFragmentManager
.setFragmentResultListener("requestKey", this) { requestKey, bundle ->
val result = bundle.getString("bundleKey") }
🔥 트러블슈팅
JAVA.LANG.CLASSCASTEXCEPTION 발생
val value = etValue.text.toString()
setFragmentResult("requestKey", bundleOf("bundleKey" to value))
원인
- value부분을 etValue.text로 설정 후 받는쪽 Activity에서 String으로 받아 JAVA.LANG.CLASSCASTEXCEPTION 이 발생하였다.
해결
- .toString() 을 이용해 String 자료형으로 바꾸니 해결되었다.
728x90
반응형
'IT 동아리 > UMC 3기 (Android)' 카테고리의 다른 글
[UMC/Android] 8주차 - RoomDB 활용하기 (0) | 2022.11.23 |
---|---|
[UMC/Android] 7주차 - Thread 이용한 타이머 만들기 (0) | 2022.11.16 |
[UMC/Android] 6주차 - Bottom navigation, TabLayout, ViewPager2 (0) | 2022.11.13 |
[UMC/Android] 5주차 - 메모 어플 만들기 (0) | 2022.11.03 |
[UMC/Android] 2주차 - 레이아웃 만들기 (0) | 2022.10.08 |