마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프래그먼트에서 액티비티로 데이터 전달시 두개의 차이점

0 추천
프래그먼트에서 액티비티로 데이터 전달시

 

프래그먼트에서 인터페이스 정의후 액티비티에 구현한 후 프래그먼트에서 리스너로 호출하는것과

액티비티에서 메소드 정의후 프래그먼트에서 getActivity로 참조를 얻어온후

해당 메소드를 호출하는것과 차이점이 뭔가요?

 

샘플 코드를보면 다 결국 getActivity를 사용해서 형변환을하거나,, onAttach에서 context를 형변환해서

사용하거나..구현을하는 이유가 무엇인가요?

 

해당 메소드가 액티비티를 위한것이 아니라 프래그먼트와 관련이 있다는것을 알수있게 위함인가요?
codeslave (3,940 포인트) 님이 2021년 3월 15일 질문

1개의 답변

0 추천
전자는 프래그먼트가 액티비티에 dependency가 없고

후자는 프래그먼트가 액티비티에 dependency가 있는 것 입니다.

실제 일어나는 동작은 같지만 코드 구조상으로 dependency가 더 적은 구조가 더 좋은 코드라고 할 수 있습니다.
디자이너정 (42,810 포인트) 님이 2021년 3월 16일 답변
감사합니다. 그런데 의존성이라고하면 단어 자체는 알겠지만..프래그먼트가 액티비티에 의존성이 있다고하면 잘이해가 가질 않습니다..
조금만 더 쉽게 설명이 가능하실까요?
Activity를 바로 가져다 쓰면 Activity에 있는 디테일들을 프레그먼트가 다 알 수 있습니다. 프레그먼트에서는 꼭 필요한 메소드만 접근하면 되는데 말이죠. 만약 누군가가 Activity에 있는  여러개 메소드들을 직접 접근해서 코딩을 했다면, 무언가 변경을 해야할 때 마다 Activity를 같이 고쳐야 할 겁니다. 하지만 Interface 통해 작업을 함으로써 프레그먼트에 사용할 수 있는 것은 인터페이스에 있는 메소들만 접근가능하고 프레그먼트는 인터페이스의 실제 구현이 어떻게 되었는지 알 필요가 없죠. 그리고 인터페이스로 작업할 때 프레그먼트에 Activity로 형변환할 필요가 없습니다. public void onAttach (Context context) 메소드에서 context가 해당 인터페이스를 구현했는지 체크해서 그런 경우에만 인터페이스 타입으로 변환해서 사용하기 때문에 액티비티를 직접 구현하는 것 보다는 훨씬 더 의존성이 덜하게 됩니다. 이론적으로 Context 클래스를 구현한 어떤 객체도 올 수 있기 때문이죠.
아..context는 형변환할필요가 없군요 샘플코드보는데 해주길래.. 그러면 context로
접근을하면 인터페이스를 구현한 메소드만 접근가능한가요?
...