인프런 커뮤니티 질문&답변

김지뇽쓰님의 프로필 이미지

작성한 질문수

하울의 안드로이드 인스타그램 클론 만들기

하울스타그램 유저 페이지 만들기 #3

Fragment UserViewFragment{755083c (97350660-0d15-4791-b814-9fd04e9c5cc3)} not attached to a context 오류문의

해결된 질문

작성

·

341

2

밑에 써 주신 분이 있지만 정확한 답변을 듣지 못해 제가 다시 질문글을 올립니다.

팔로우을 하고 본인 account 프레그먼트에 가서 확인한 다음 다시 팔로우를 취소하게 되면 팔로우는 취소 되지만 어플이 크러시가 납니다.

account 뿐만 아니라 다른 프레그먼트들로 이동한 후 팔로우를 취소했을 시에도 똑같은 반응이 나오는데 어떻게 해결해야 하나요??

답변 7

1

김지뇽쓰님의 프로필 이미지
김지뇽쓰
질문자

저는

override fun onDestroy() {
super.onDestroy()
registration!!.remove()
}

이렇게 사용하고 있습니다~

액티비티나 프래그먼트의 생애주기에 따라 화면이 사라지는 부분에서 remove를 해주면 됩니다

registration은

var registration: ListenerRegistration? = null

이렇게 전역으로 선언하고 스냅샷으로 사용하면 됩니다

registration = firestore!!.collection("reunions").document(reunionUid).addSnapshotListener { value, error ->
if (value == null) return@addSnapshotListener
reunionDTO = value.toObject(ReunionDTO::class.java)!
}

1

저도 같은 오류가 나는데

어디서 뭘 어떻게 remove 시켜줘야하는건지

도통 모르겠네요 ㅜㅜ

코드로 좀 알려주시면 정말 감사하겠습니다~!!

1

하울님의 프로필 이미지
하울
지식공유자

remove은 Activity 생명주기에 맞춰줘서 주면 됩니다. Remove코드를 onStop에 넣어주고 읽어주는 Snapshot 코드를 onStart에 넣어주면 됩니다.

1

하울님의 프로필 이미지
하울
지식공유자

그 이유는 디비를 감시하는 remove를 통해서 스냅삿을 꺼줘야 합니다.

https://firebase.google.com/docs/firestore/query-data/listen#kotlin+ktx_4 링크 참고하세요

0

와우~ 김지능쓰님 정말 감사합니다~!

이제 잘 되네요~ ^0^

0

김지뇽쓰님의 프로필 이미지
김지뇽쓰
질문자

감사합니다!

0

김지뇽쓰님의 프로필 이미지
김지뇽쓰
질문자

어느 부분에서 remove를 시켜주어야 하는 건가요??