Fragment 교체 에러

박재원·2024년 2월 2일
0

TIL

목록 보기
41/50
post-thumbnail
post-custom-banner

API로 80개의 이미지를 불러온 후 스크롤이 끝까지 내려가면 새로운 아이템들을 불러오는 기능을 구현하고 있었고, 새로 불러오는 과정에서 CircleProgressDialog로 로딩 pogressbar를 띄우는 기능을 구현하려고 했다. 그 과정에서 에러가 발생했다.

에러내용

private fun showLoading() {
	CoroutineScope(Dispatchers.Main).launch {
		loadingDialog.show(supportFragmentManager, loadingDialog.tag)
		withContext(Dispatchers.Default) { delay(1500) }
		loadingDialog.dismiss()
	}
}
Unresolved reference : supportFragmentManager
  • Host Activity인 MainActivity에서 프래그먼트를 교체하고 싶은데 Host Fragment인 Fragment에서 supportFragmentManager를 호출하였기 때문이다.

에러해결

private fun showLoading() {
	CoroutineScope(Dispatchers.Main).launch {
		loadingDialog.show(parentFragmentManager, loadingDialog.tag)
		withContext(Dispatchers.Default) { delay(1500) }
		loadingDialog.dismiss()
	}
}
  • MainActivity에서의 동작으로 프래그먼트를 교체하고싶다면 supportFragmentManager를 사용해야한다.
  • MainActivity 위에 올라가 있는 프래그먼트에서의 동작으로 MainActivity 위의 프래그먼트를 교체하고 싶다면 parentFragmentManager를 사용해야 한다.
  • childFragmentManager의 경우 프래그먼트 위에 또 프래그먼트가 올라가는 상황에서 사용하게 되는데 다중프래그먼트의 경우 구현이 복잡해지기 때문에 가능하다면 custom view를 사용하는것을 권장한다.

post-custom-banner

0개의 댓글