dialog fragment에서 fragment로 받아오는데 계속 반응이 없어서 다양한 방법을 사용하다가
그 DialogFragment를 띄우는 parent가 무엇인지가 중요하다는 것을 알았음.
navigation을 써본지 얼마 안되서 parentFragment와 childFragment가 어떻게 되는지 생각을 못했음...
만들어 놓은 구조는
MainActivity 안의 MainFragment 속의 FragmentA의 Adaper에서 DialogFragment를 띄우고 이의 반응을 받아오는 구조였는데 나는 그 DialogFragment의 Direct를 정할때 MainFragment에서 불러왔었고, 이의 반응을 받을때 계속 MainActivity의 반응이나 FragmentA에서의 result를 받아오기만 계속 되풀이 했었다...
그러니까
requireActivity().supportFragmentManager.setFragmentResultListener(
OPEN_CARD,
viewLifecycleOwner
){_, _->
Toast.makeText(requireContext() , "오픈!" ,Toast.LENGTH_SHORT).show()
}
// 엑티비티에서 받아오기
setFragmentResultListener(OPEN_CARD){ key ,bundle ->
if(bundle["response"] as Boolean){
Toast.makeText(requireContext() , "오픈!" ,Toast.LENGTH_SHORT).show()
}
}
// FragmentA에서 받아오기
위의 두 과정만 계속 하다가 왜 안되는거지? 고민함
결국 메인 프레그먼트에서 받아오기 위해서 부모 프레그먼트의 호출이 필요했음.
parentFragment?.let {
it.setFragmentResultListener(OPEN_CARD){ key ,bundle ->
if(bundle["response"] as Boolean){
Toast.makeText(requireContext() , "오픈!" ,Toast.LENGTH_SHORT).show()
}
}
}
이렇게 해결하면 됨
!! 프래그먼트가 어디에서 띄워지는가도 중요하고 원래 예전 방식을 쓸때는 그 PARENT를 지정해 줬었는데 NAVIGATION을 사용하면서 자동으로 지정됨. 어디서 띄우는가가 중요!
'어플 개발일기' 카테고리의 다른 글
android wating for debugger 계속 뜨는 문제 (0) | 2021.06.14 |
---|---|
data binding 에서 setonclicklistener 안먹혀서 고생함 (0) | 2021.06.14 |
listadapter position 변경되는 현상?. (0) | 2021.06.08 |
flow는 왜 코루틴 스코프를 직접 안써도 되나?(android) (0) | 2021.05.21 |
firebase 와 mvvm구조로 addsnapshot 구현해보자 (0) | 2021.05.15 |