2011-12-01 2 views
0

FragmentActivity, FragActivityA 및 FragActivityB의 두 인스턴스와 두 ListFragments, FragA 및 FragB가있는 응용 프로그램이 있다고 가정 해 보겠습니다.FragmentActivities 대 Fragments의 역할/책임

세로 방향에서 FragActivityA는 FragA를 표시하고 선택시 FragActivityB는 FragB를 표시합니다.

FragA는 ListView (일부 네트워킹 비즈니스는 언론에서 수행됨) 또는 FragActivityA?에 대해 OnItemClickListener를 구현해야합니까? FragA가 DialogFragment를 표시해야합니까? 아니면 FragActivityA에 콜백해야 표시합니까?

가로 방향 인 경우 FragActivityA는 FragA와 FragB를 모두 표시합니다. 이제 위의 답변이 '예'인 경우 FragActivityA는 대부분의 코드를 복제하여 FragActivityB의 대부분의 메소드를 포함해야합니다. 대답이 no이면 FragA 또는 FragB는 DialogFragments 자체를 표시하고 처리해야합니다.

나는 내 코드의 대부분을 어디에 써야하는지에 대한 약간의 지침을 찾고 있습니다. (내 직감은 프래그먼트 안에 있습니다.) 그러나 DialogFragments를 표시하는 프래그먼트는 저에게 이상합니다.

답변

1

두 개의 인스턴스 인 FragmentActivity, FragActivityA 및 FragActivityB, 두 개의 ListFragments, FragA 및 FragB가있는 애플리케이션이 있습니다.

나는 FragmentActivity, FragActivityA 및 FragActivityB의 두 인스턴스, 2 개의 ListFragments, 프라와 FragB과 응용 프로그램이 있습니다.

아, 아니, 내가 그런 말을하는 당신은 문자 그대로 의미하지 않았다, 잠깐 ... :-)

한다 프라가 (일부 네트워킹 비즈니스 프레스에서 수행) ListView에 대한 OnItemClickListener 구현, 또는 FragActivityA?

FragAonListItemClick()을 무시해야합니다. 그 시점에서 일어나는 일은 관련된 비즈니스 로직에 조금 의존합니다. "언론에서 일부 네트워킹 비즈니스가 수행되고 있음"을 나타내면 IntentService에 명령을 보내거나 AsyncTask을 생성하는 것처럼 들립니다. 내 현재의 생각은 그러한 것들이 또한 FragA에 의해 행해지 겠지만, 나는 당신의 앱에 대해 많이 알지 못하기 때문에 그것에 대해 확신하지는 않는다.

FragA는 DialogFragment를 표시해야하나요, 아니면 FragActivityA에 콜백하여 표시해야합니까?

이상적으로는 어느 쪽도 바람직하지 않습니다. 사용자의 UI를 디자인하여 전체 활동이 아닌 조각의 개를 잠글 수 있습니다. IOW, 대화 상자의 사용을 최소화하십시오.

내 일반적인 지침은 조각 자체 (및 기본 데이터 모델)의 범위로 제한된 모든 작업을 처리한다는 것입니다. 여러 단편을 초월하는 이벤트는 활동까지 파문을 당해야하며,이 이벤트는 다른 기존 단편 (이 활동으로로드 된 경우)에 전달하거나 다른 활동을 시작하는 역할을합니다. MVC 용어로는 단편 사이의 활동 처리 오케스트레이션 이벤트 (따라서 필요한 경우 활동 간)가있는 컨트롤러가 단편입니다.

이제 위의 답변이 '예'인 경우 FragActivityA에 대부분의 코드를 복제하여 FragActivityB의 대부분의 메소드가 포함되어야합니다.

공용 로직을 구현하는 공통 AbstractFragActivity에서 상속해야하는 것처럼 들립니다.

+0

많은 감사. 내가 가져 가야 할 것들이 분명히 있습니다. – Alex