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

Fragment에서 생성한 객체내에서 다시 Fragment를 참조하는 방법?

0 추천
Fragment 로 플레이어를 만들었습니다. A Fragment라고 해두죠.

근데 거기서 오디오 소스 처리를 따로 Class를 만들어서 해줬고

그 Class는 아무것도 상속받지 않았습니다. B Class라고 해두죠.

즉 오디오 소스처리 B Class 내에 MediaPlayer가 있습니다.

그래서 A Fragment에서 그걸 생성해서 B play(), stop() 메소드를 호출합니다.

근데 A Fragment의 재생 일시정지 아이콘을 B play(), stop() 소스코드 내에서

변경할려고 하는데 B Class는 아무것도 상속받지 않았으니

A Fragment의 상위 뷰를 참조할 수 없습니다.

그래서 제가 생각한 방법이 A Fragment에서 static으로
 
public static Fragment a = this;

이런식으로 저장해서

A에서 B를 사용할때 생성자에

B b = new B(a);

이런식으로 static 변수를 보내주고

B class에서 그걸 받아서 저장해서 A의 변수를 쓰고 메소드를 호출합니다.

 

질문

1. 근데 이런방식으로 하는게 맞는지, 크게 문제가 없는지.

2. 아니면 그냥 A, B를 합치는게 낫는지.

3. 아니면 다른 방법이 있는지

 

이 세가지가 궁금합니다.

어떤 답변도 감사드립니다.
생귤탱귤 (370 포인트) 님이 2014년 1월 23일 질문
생귤탱귤님이 2014년 1월 23일 수정

1개의 답변

+1 추천

A Fragment의 재생 일시정지 아이콘을 꼭 B클래스 내에 처리해야되는 이유가 있나요?

아이콘 변경이면 그냥 프레그먼트 선에서 처리를 하시는게 더 쉬울거 같은데요..

실행되는 메소드에서 B play(), stop() 구문 실행하기 바로 전에 아이콘 변경 처리 해주시면 안되나요?

슈루슈 (2,610 포인트) 님이 2014년 1월 23일 답변
혹시 이렇게 구성하는게 좋지 않은 방법인가요?
제가 개발경력이 별로 안되어서 잘 모르는데..
그냥 직접적으로 Stop(), Play()에 넣고 싶었거든요..
하면서도 이게 해도되는 방법인가 고민도 많이되더군요.
저도 잘 아는건 아니지만

가장단순하게 하자면
껍데기들과 껍데기 구성리소스 핸들링은 프레그먼트에서 제어하시고
핵심 비지니스 로직만 클래스로 만들어서 사용하시는거 어떨까요?

일단 정상적으로 돌아가게되면 그때부터 리팩토링 가능여부를 따지는 것도 나쁘지 않을 듯 하네요
그게 맞는방법 같기도 하네요.
비쥬얼라이저도 B클래스에 몰아넣었는데
그것도 A로 빼주는게 좋겠네요. 감사합니다.
...