ViewModel 로 값 전달하면 서로 결속력이 너무 강해진다
리스너로 연결하는 방법도 있지만 그것보다 좀더 편한 방법이 있다.
(리스너도 리스너객체를 전달하고 구현해야하기 하기때문에 불편)
(Fragment or Activity) <-> (Activity)
private val productWishResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
viewModel.input.onRefresh()
}
}
productWishResult.launch(ProductDetailActivity.getIntent(requireContext()).apply {
putExtras(
bundleOf(
ProductDetailActivity.EXTRA_PRODUCT_ID to it
)
)
})
HomeFragment 에서
ProductDetatilActivity 로 이동한 후에
setResult(RESULT_OK)
를 받은 후 HomeFragment 로 돌아왔을때 onRefresh()를 호출하는 구조
Fragment <-> ChildFragment 간 통신
ChildFragment
setFragmentResult(
FavoriteProductFragment.name, bundleOf(
RESULT_OK to it
)
)
ParentFragment
childFragmentManager.setFragmentResultListener(
FavoriteProductFragment.name, this
) { _, bundle ->
val isUpdated = bundle.getBoolean(FavoriteProductFragment.RESULT_OK)
if (isUpdated) {
viewModel.input.onRefresh()
}
}
'Android' 카테고리의 다른 글
WebView 파일 업로드 (0) | 2022.06.14 |
---|---|
"좋아요" 동기화 (로컬 싱크 맞추기, Rx 이용) (0) | 2022.03.14 |
쿠키로 Auth인증하는 방법 (Interceptor 첨부) (0) | 2022.02.12 |
음성 파일 서버 업로드하기 (0) | 2022.01.10 |
DiffUtil 사용시 정렬후 스크롤 Top 으로 이동하기 (0) | 2021.12.29 |