2010-11-24 3 views
9

활동 그룹에서 활동을 시작하려고 할 때 어떤 결과도 나타나지 않는 것 같습니다. 나는 activity와 activitygroup에 onactivityresult를 두 었는가? 특히 나는 사용자가 Intent.ACTION_GET_CONTENT에서 사진/비디오를 선택할 수있게하려고 노력하고 있지만 다시는 아무것도 얻지 못합니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?ActivityGroup의 startActivityForResult?

Intent pickMedia = new Intent(Intent.ACTION_GET_CONTENT); 
    pickMedia.setType("video/*"); 
    startActivityForResult(pickMedia,12345); 

어떤 아이디어 : 여기

내가 코드를 호출하는 방법입니다?

+0

스티븐 (Steven) 코드를 통해 무엇을 의미하는지 조금 더 명확하게 설명해 주시겠습니까? 감사! – Jon

+0

Jon - Nagkeeran이 내 문제를 해결하기 위해 내 접근 방식을 사용한 것처럼 보입니다. 그는 몇 가지 샘플 코드를 게시 : http://stackoverflow.com/questions/6992142/android-wait-for-another-activity-result-it-didnt-work –

답변

41

비슷한 문제가 있습니다. 하위 액티비티를 관리하는 ActivityGroup이 있습니다. 하위 활동 중 하나가 유사한 외부 의도 (내 앱 외부)라고합니다. 그것을 시작한 하위 액티비티 내에서 onActivityResult를 호출하지 않았습니다.

안드로이드는 하위 액티비티의 중첩 된 계층 만 허용하기 때문에 문제가 있다는 것을 알아 냈습니다. 즉 하위 액티비티는 하위 액티비티를 중첩 할 수 없습니다. 이 문제를 해결하려면 당신의 세부 평가 활동에서

  1. 전화 getParent().startActivityForResult()
  2. 부모합니다 (activitygroup)는 onActivityResult 처리 할 수있을 것입니다. 그래서 ActivityGroup 하위 클래스를 만들고 이것을 onActivityResult으로 처리했습니다.
  3. 필요한 경우 해당 결과를 하위 활동으로 다시 라우팅 할 수 있습니다. 현재 활동을 getLocalActivityManager().getCurrentActivity()까지 받으십시오. 내 하위 활동은 맞춤 활동을 상속하므로 ActivityGroup에 대한 하위 클래스에 handleActivityResult(requestCode, resultCode, data)을 추가했습니다. 귀하의 학부모 활동에
+1

나는 동일한 문제가 있고 나는 이해할 수 없다. 당신은 그것을 설명합니다 – Dharmendra

+1

@Steven Pena, 그런 다음 startActivityForResult에 대한 getDecorView()를 호출하여 ActivityGroup의보기를 대체하는 방법 –

+0

+1 그게 성공했습니다! 나는 1 단계와 2 단계를 수행했다. 그 후 나는 현재 활동에 대한 정적 참조를 유지하고 거기에 결과를 전파했다. 감사! –

4

protected void onActivityResult(int requestCode, int resultCode, Intent intent){ 
    if (requestCode == YOUR_REQUEST_CODE) { 

     CHILD_ACTIVITY_NAME activity = (CHILD_ACTIVITY_NAME)getLocalActivityManager().getCurrentActivity(); 

     activity.onActivityResult(requestCode, resultCode, intent);}} 

그래서 childern 활동의 onActivityResult를 실행됩니다.

+0

작동 중 ... 감사합니다. –