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

조회수 2346회

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

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

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

답변 기다리겠습니다!!

  • (•́ ✖ •̀)
    알 수 없는 사용자

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(); } 와 같이 분기처리 하여 사용하시면 됩니다

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)