2012-04-28 4 views
1

아이스크림을 먹기 전에 개발자는 화면의 UI 상호 작용을 처리하기 위해 활동 주위의 논리 흐름을 만드는 데 익숙해졌습니다. 각 탭이 조각 활동으로 작동하는 결합 된 탭 /보기 호출기를 만드는 작업에 직면했습니다.조각 활동을위한 최적의 디자인 패턴

최종 결과는 원본 코드가 엉망이거나 조각 활동을 디자인하는 데 나쁜 접근 방식을 취하는 것입니다.

한 화면을 관리하는 활동 하나와 해당 화면의 모든 UI 측면을 제어하는 ​​활동을 생각해보십시오. 이제 ActionBarSherlock을 사용하여 화면 UI 컨트롤을 프래그먼트 작업의 레이아웃으로 옮겼습니다. 이전에는 예전과 같은 탭에서 다음 탭으로 스 와이프하기위한 탭 처리 메커니즘이있는 주요 활동이 있습니다. 다른 활동을 시작하십시오.

내 질문은 다음과 같습니다. 조각 활동에서 원래 코드를 분할하는 가장 좋은 방법은 무엇입니까? 핸들러를 사용하여 프래그먼트 활동에서 주요 활동으로 내부적으로 메시지를 전달하려고 생각했지만 잘못된 생각으로 느껴집니다.

나는 이것을 위해 ActionBarSherlock을 사용하고 있습니다.

이 시나리오의 구체적인 예와 그 접근 방법을 검색했지만 찾지 못했습니다.

편집 : CommonsWare 의견 후,이 .. 그게 내가 달성하기 위해 노력하고있어의 의도, http://androiduipatterns.com "루이스 르 웰린와 페이스 북"스크린 샷 여기에 도시 된 제 2 영상을보고있다

전 : Activity은 하나의 화면에 대해 UI 측면을 처리했습니다.

지금 : SherlockFragmentActivityViewPager의 탭 호스트, 즉 apk의 "주요"활동 및 SherlockFragment에서 확장되는 각 탭 조각. 각 탭은 이제 UI 컨트롤이있는 화면입니다.

+0

"각 탭이 조각 활동으로 작동하는 결합 된 탭 /보기 호출기"- 활동 내부의 활동 (즉, '활동 그룹')은 사용되지 않습니다. 단편 뒤에있는 부분의 절반은 활동 내부에서 벗어나는 것이었다. – CommonsWare

+0

은 Google의 플레이 스토어 레이아웃과 같은 것으로, 스 와이프 및 뷰 변경 ... http://www.androiduipatterns.com/ "Lewis Llewellyn and Facebook"스크린 샷의 두 번째 이미지를 보면, .. – t0mm13b

+0

그것은 조각을 담고있는'FragmentPagerAdapter'를 사용하는'ViewPager'를 가지고있는'FragmentActivity'입니다. 모든 중첩 된 활동이 없습니다. – CommonsWare

답변

3

IMHO, ViewPager의 각 단편은 다른 단편이 현재 존재할 수 있기 때문에 자체적으로 처리됩니다. 해당 단편에서 다른 단편이나 전체 활동에 영향을 줄 수있는 이벤트는 getActivity()을 통해 호스팅 활동으로 전달 될 수 있으며, 여러 활동에서이 단편을 호스팅하려는 경우 인터페이스로 전송할 수 있습니다. 아니 Handler 필요합니다.

+0

그래, 내가 말했던 것처럼 이것을 시각화 할 수있다. 처음에는 활동에 있던 코드를 떼어 내고 대신 FragmentActivity에 드롭하면 다른 사람들과 격리되어 유지된다. – t0mm13b

+0

@ t0mm13b : 글쎄, 그 부분에 대해서는 언급 할 수 없습니다. 그 부분은 현재 가지고있는 것에 대한 깊은 이해를 의미하며 여기에서 모니터를 볼 수 없습니다. – CommonsWare

+0

lol! 충분히 공정한, 그래. 그건 공정한 의견입니다 :) +1. 나는이 이야기에 도덕적 인 것이 있다고 생각한다! – t0mm13b

2

그래서 나는 다른 조각들 사이에서 코드를 복제하는 것이 아니라고 생각합니다. 매우 유사한 조각의 경우 내가하는 것은 동일한 코드가있는 기본 조각을 만드는 것입니다. Google이 종종 알아 차리는 다른 옵션은 (정적) 메소드로 도우미 클래스를 만드는 것입니다. 어떤 경우 든 다른 단편에서 단편을 호출하지 마십시오.