카카오 지도 API를 사용하는 안드로이드에서 mapView에 관한 리스너 작동이 되지 않을 때

mapView.setPOIItemEventListener(object : MapView.POIItemEventListener{
override fun onCall…(…){…}

}

위와 같이 코딩을 했더니 리스너가 작동을 안 하더라구요;
구글링하다가 해결방법을 못찾겠어서 제가 해결한 방법을 써놓겠습니다.

사실 그냥 클래스 변수를 하나를 만들면 됩니다.
class 내클래스{
val listener = = object : MapView.POIItemEventListener{
override fun onCall…(…){…}

}
이런식으로요.

그리고 코드 어딘가에 mapView.setPOIItemEventListener(listener)를 넣으면 되는 것이죠.
참 쉽죠? (아드득 빠드득 ^ㅍ^)

안드로이드에서 alt+(setPOIItemEventListener 함수 클릭) 을 해보시면
new WeakReference(poiItemEventListener);
라는 부분을 찾을 수 있습니다.

즉, 약한 참조여서 리스너 객체는가 바로 사라져버리는 일이 생겨 생각한 대로 잘 되지 않은 것 같습니다.
(사실 자바 잘 안써서 정확히는 모르겠습니다만;)

이 글을 읽으시는 분들의 에러가 금방 끝나길 바라면서 이만 글을 마치겠습니다. 뿅!

이걸로 고생하고 있었는데, 바로 해결 됐네요. 정말 감사합니다!

하… 감사합니다
코틀린으로는 이렇게 해서 되는거 확인했습니다…
정말 카카오 API 잘만들어지긴했는데 간간히 이런것 때문에 고생이 많아지긴하네요 ㅜㅠ

class aaa {
           val listen = null

       onViewCreated(){

              listen = OnMarkerClickedEvent()
              map.setPOIItemEventListener(listen)
       }
}

class OnMarkerClickedEvent : MapView.POIItemEventListener{
        override fun onPOIItemSelected(mapView: MapView?, marker: MapPOIItem?) {
            Log.d(TAG,"Fdsa")
        }

        override fun onCalloutBalloonOfPOIItemTouched(p0: MapView?, p1: MapPOIItem?) {
        }

        override fun onCalloutBalloonOfPOIItemTouched(
            p0: MapView?,
            p1: MapPOIItem?,
            p2: MapPOIItem.CalloutBalloonButtonType?
        ) {
        }

        override fun onDraggablePOIItemMoved(p0: MapView?, p1: MapPOIItem?, p2: MapPoint?) {
        }
}

와 감사합니다.
똑같은 문제로 고생하고 있었는데 해결 되었네요 …