본문 바로가기
Android 개발/Android

Fragment 에서 Activity 로 데이터 전달하기

by Developer88 2017. 1. 16.
반응형

안드로이드 앱을 개발하다보면,

Fragment에서 Activity로 데이터를 보내는 일이 생기는데요.

오늘은 이 방법에 대해서 정리해보겠습니다.


사실, 데이터를 보내는 방법은 다른 방법들이 있을 수 있겠지만,

이 글에서는 interface를 이용해서 보내는 방법을 사용하도록 하겠습니다.


참고로, inteface에 관해 정리한 글은 아래링크에서 볼 수 있어요~.

>>>> 안드로이드를 위한 자바 인터페이스 #다중상속 #콜백 <<<<



1. Interface 생성


먼저 Interface를 생성하고 구현해야할 콜백을 명시하도록 하겠습니다.

인터페이스는 Fragment밖에서 파일로 생성해서 해도되고, Fragment안에서 해도 됩니다.




2. Activity에서 Interface 구현


데이터를 받을 Activity에서 위에서 생성한 Interface를 구현할 텐데요. 먼저 아래와 같이 implement를 하면, onTimePickerSet을 구현하라고 나옵니다.




이제 onTimePickerSet()메소드를 구현하면 되는데요.

아래와 같이 Fragment에서 hour와 min을 받아서, Activity내부의 변수에 set하는 형태로 만들어보겠습니다.



이제, Activity에서는 해야할 구현을 다 하였구요. 

데이터를 보내는 Fragment 에서는 어떻게 해야할지 정리해보도록 하겠습니다.



3. Fragment 구현


Acitivty는 onTimePickerSetListenter를 Implement한 것이여서,

Fragment가 얻은 context를 형변환하면, 리스너로 얻어올 수 있습니다.

프래그먼트의 라이프사이클중 하나인, onAttach() 메소드에서 얻어온 context를 사용하여 형변환하고,

onTimePickerSetListener 변수에 담아놓고 사용하면 됩니다.

그리고, onDetach()때 리스너에 null값을 주어 해제하여 줍니다.

(사실 detach 때 해제하는 걸 잘 않해서 글을 쓰면서도 반성하게되네요.)






이제 거의 다 되었네요~. 형변환해 얻어온 리스너를 이용해서, 

Acitivity가 구현한 메소드인 onTimePickerSet()를 이용해 액티비티쪽으로 데이터를 보낼 수 있게 되었습니다.




다음 글에서는 Activity에서 Fragment로 데이터 보내는 방법에 대해서 정리해보도록 하겠습니다.

728x90

댓글