Fragment에서 Activity의 함수에 접근에 대해 질문드립니다.


안드로이드에서 Fragment는 어떤 Activity에도 붙여 재사용 할 수 있도록 Activity에 의존성을 가지지 않게 독립적으로 구현하도록 추천하는것으로 알고 있습니다. 그 방법으로 인터페이스를 구현해서 접근하는것으로 알고 있는데요. 여기까진 이해가 됩니다.

// 아래와 같이 사용할 경우 해당 Fragment는 OOActivity에서만 사용 가능하기 때문에 안된다!
((OOActivity) getActivity).OOActivityMethods();

그런데 getActivity()로 얻을 수 있는 최상위 Activity클래스의 함수들. 예를 들면 .finish(), isFinishing() 등과 같은 함수들도 사용하면 안되는 건가요? 아니면 제가 이해한게 틀렸다던가..

답변 기다리겠습니다!!

  • 2017년 08월 04일에 작성됨
    java, android, python, Django...

조회수 137


1 답변


https://developer.android.com/reference/android/app/Activity.html

finish() Call this when your activity is done and should be closed.

isFinishing() Check to see whether this activity is in the process of finishing, either because you called finish() on it or someone else has requested that it finished.

두함수 모두 Activity 클래스에 포함되어 있으므로 사용하는데 문제없습니다.

// 아래와 같이 사용할 경우 해당 Fragment는 OOActivity에서만 사용 가능하기 때문에 안된다! ((OOActivity) getActivity).OOActivityMethods();

강한 커플링의 경우 재사용성을 해치기 때문에 해당코드는 ((Activity) getActivity).OOActivityMethods();

또는

if(getActivity instanceof OOActivity){ ((OOActivity) getActivity).OOActivityMethods(); } 와 같이 분기처리 하여 사용하시면 됩니다

  • 2017년 08월 25일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close