2013-05-04 3 views
1

내 앱인 TabHost를 사용합니다. 및 ActivityGroup을 사용하여 탭 아래의 활동을로드 할 수 있습니다. 두 번째 탭에서 activityGroup "TabGroupActivity"를 열면 여기에서 자식 작업 "childActivity2"를 엽니 다. "childActivity2"에서 테마 대화 상자가있는 일반 활동을 열고 싶습니다. 내 정상적인 활동에서 돌아 왔을 때 내 childActivity2에서 onActivityResult()를 실행하려고합니다. 그러나 ChildActivity2의 onActivityResult()가 작동하지 않습니다. childActivity2의 정상적인 활동을 시작하는OnActivityResult activityGroup과 함께 작동하지 않습니다.

코드이 내 onActivityResult를()

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if(resultCode==Activity.RESULT_OK) 
     { Log.e("get","result"); 
      ................. 
         ...... 
     } 


    } 
+0

사용자 정의 Listner를 사용하여이 –

+0

을 처리하는 방법을 알아야합니다. 모든 샘플 코드 ??? – Vikky

+0

나는 아이디어를 얻지 못했습니다 ... 어떤 샘플 코드도 줄 수 있습니까? onActivityResult() 대신 – Vikky

답변

2

당신의 문제가 내와 동일하다

data.putInt("doctorId", doctor_id); 
       Intent createSchedule = new Intent(ScheduleWeekly.this, CreateSchedule.class).putExtras(data); 


       startActivityForResult(createSchedule, 1); 

입니다. 문제는 onActivityResult 함수가 활동 그룹의 하위 활동에서 직접 트리거하지 않는다는 것입니다. 의도는 해당 하위 활동의 ​​것입니다.

용액을 3 단계로 나누었다.

먼저 부모 활동 인 ActiviyGroup 클래스가 현재 활동을 건너 뛰어야하는 위치에서 startActivityForResult 함수를 호출해야합니다. 점심에 정상적인 활동을 필요로 할 때 자녀의 활동에 대신 전화 :

startActivityForResult(intent, 0); 

당신은 호출해야합니다 :이 다시 전화를 돌봐하는 ActivityGroup을 드릴 것입니다

getParent().startActivityForResult(intent,0); 

. 귀하의 경우, 당신은 세 단계로 중첩되어 있기 때문에, 부모 또는 조부모가 콜을 돌봐 주어야하고 getParent() 부분에 대해 적절한 수정을해야 할지도 모른다.

둘째, 현재 활동의 상위 클래스가 의도를 시작한 후에는 onAcivityResult() 함수를 부모 클래스와 현재 자식 클래스에 추가해야합니다. 현재 수업에서는 보통의 콜백 핸들 메시지를 작성합니다. 그러나 부모 클래스에서 onActivityResult() 함수는 정상적인 활동에서 콜을 되돌리고 현재 클래스에 인 텐트를 전달합니다.

public void onActivityResult(int requestCode, int resultcode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultcode, data); 
    switch (resultcode) 
    { 
    case RESULT_OK: 
     MyChildActivity CA = (MyChildActivity) getLocalActivityManager().getCurrentActivity(); 
     CA.onActivityResult(requestCode, resultcode, data); 
    } 
} 

당신이 볼 수 있듯이, 부모 ActivityGroup 클래스에서 onActivityResult를 함수가 그냥 전화를 잡을되면, 얻을 :

셋째,이 단계는 당신의 필요, 그 클래스에서, 부모 onActivityResult를 클래스입니다 하위 활동으로 이동하여 다른 활동으로 이동해야하며 해당 활동으로 데이터를 전송해야합니다. 2 단계에서 상태로 자녀 작업에서 정확히 onActivityResult 함수가 필요하지 않을 수도 있지만 이것이 더 좋은 방법이라고 생각합니다.

희망이 도움이됩니다.

+0

amazine 대답 .... 덕분에 많이 :) – ishu

관련 문제