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

프래그먼트 데이터 전달 방법 질문드려요!

0 추천

안녕하세요. 안드로이드를 공부하는 학생 입니다.

궁금한 점이 있어서 질문드립니다.

일단 프래그먼트끼리 값을 전달하려면 리스너 인터페이스를 구현하여 사용하는것으로 알고있습니다.

그런데 다른 액티비티에 구현된 프래그먼트끼리 데이터 전달은 리스너로 안되더라구요...

이런식으로 화면을 구성하였습니다. BaseActivity에 리스너를 정의하였고 E Fragment에서 C Fragment로 값을 전달하고 싶은데....

B Activity나 D Fragment에서는 E Fragment에서 설정한 값이 그대로 나오는데 C Fragment에서만 값이 그대로더라구요...

이럴 경우 어떤 방법으로 해결해야하나요?

조언 부탁드립니다!

YoungkK3 님이 2015년 4월 3일 질문

1개의 답변

+2 추천
 
채택된 답변
값이 어떤 값이냐에 따라서 달라지는데요

A Activity 와 B Activity 가 동시에 화면에 띄워질 일은 없으므로 값을 직접 전달하지는 않습니다.

보통 DataStorage 를 정의해서 A Activity 와 B Activity 와의 coupling 을 없애고

A Activity <-> DataStorage <-> B Activity 의 형태로 구성을 하죠

DataStroage 는 File 이 될 수도 있고 DB 가 될 수도 있는데

안드로이드에서는 SharedPreferences 를 쓰는게 편할꺼 같습니다.

따라서 원하시는 기능을 구현하려면

E Fragment -> DataStroage Update

A Activity 화면이 띄워졌을 때 C Fragment 가 DataStorage 에서 값을 가져옴

식으로 구현하시면 될것 같습니다
mamondebaltob (32,750 포인트) 님이 2015년 4월 3일 답변
답변 감사합니다! 확실히 SharedPreferences를 이용하면 편하겠네요!
질문할때 빠져서 수정을 하려는 차에 답변이 달렸네요ㅎㅎ 질문 하나만 더 드리겠습니다.
E fragment 종료 후 바로 C fragment가 화면에 띄어지는데도 SharedPreferences 사용해야할까요?
getter setter를 사용해도 안되더라구요
getter setter를 사용은 못할까요?
E fragment 가 C fragment 스택 항상 위에 실행된다는 보장만 있다면
SharedPreference 말고 startActivtyForResult 와 onActivityResult 를
이용해서 간단하게 구현도 가능하겠네요
감사합니다! onActivityResult 이용하여서 성공했습니다~
정말 감사드려요!
...