2011-03-14 2 views
15

을 호출하지 않았습니다. 지금까지 startActivity 함수를 성공과 함께 사용 했으므로 이제 startActivityResult를 사용해야합니다. 문제가 있습니다.onActivityResult는 결코

이 기능을 사용하면 시작하려는 활동이 올바르게 시작되지만 onActivityResult 함수가 호출되지 않는 것처럼 보입니다. 기록

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

    Log.i("in OnActivityResult", "Activity Result");       

    switch (requestCode) 
    { 
     case 2:    
      Log.i("in OnActivityResult", "Activity Resut 2");     

      break; 
    } 
} 

내 로그 파일에 아무것도 :

Intent intent = new Intent(FriendPicker.this, MoodPicker.class); 
startActivityForResult(intent, 2); 

그리고 여기 내 MoodPicker 활동에 코드입니다 : 여기

는 FriendPicker 활동에 내 코드는 MoodPicker 활동을 미사일하는 것입니다 (물론, 로그 파일이 제대로 작동하는지 확인하고 텍스트보기 출력으로 다시 확인하십시오.)

매니페스트 파일에 선언하는 것을 잊어 버린 것이 있습니까?

미리 감사드립니다.

답변

10

setResult() 전화를 MoodPicker 클래스에 추가 했습니까?

+0

확인을 죽인다. 감사! – thomaus

+11

이 게시물을 읽는 다른 사용자가 유용한 도움을 찾을 수 있도록 솔루션을 추가하십시오. –

6

이 권리를 읽는다면, 언급 된 모든 코드는 "FriendPicker"에 있어야합니다.

this.setResult(SUCCESS_RETURN_CODE, i); 
this.finish(); 

이 도움이되는지 알려주세요 ...

+0

내가 작성한 코드가 모두 FriendPicker 활동에 있어야한다는 말입니까? 왜냐하면 그렇다면 startActivityForResult 프로세스에서 전혀 얻지 못하는 무언가가 있습니다. – thomaus

+0

내 FriendPicker 클래스 및 lo 로그에 onActivityResult 함수를 두어 보았습니다. 나는 그것을 얻지 못한다 ... – thomaus

+3

onActivityResult()는 startActivityForResult()를 호출 한 Activity에 위치해야한다. –

3

FriendPicker 활동

Intent intent = new Intent(FriendPicker.this, MoodPicker.class); 
startActivityForResult(intent, 2); 


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

    Log.i("in OnActivityResult", "Activity Result");       

    switch (requestCode) 
    { 
     case 2:    
      if (resultCode == Activity.RESULT_OK) {  //optional 
      Log.i("in OnActivityResult", "Activity Resut 2");     
       } 
      break; 
    } 
} 

MoodPicker "MoodPicker"당신은 결과를 설정하고 자체 끝이 같은 코드가 필요 등급

Intent intent = new Intent(MoodPicker.this, FriendPicker.class); 
     setResult(Activity.RESULT_OK, intent); 
finish(); 

동일한 문제가 onActivityResult(); 왜냐하면 내가 올바르게 적용되는 방법을 이해하지 못했기 때문입니다. 여기에 onActivityResult를 사용하는 좋은 설명을 찾을 수 있습니다. onActivityResult doesn't work?

5

안드로이드 API에는 버그가 있습니다. startActivityForResult (intent, requestCode);에서 이 funktion은 requestCode = 0 인 동안 작동합니다. 그러나 요청 코드를 0으로 변경하면 ApiDemos가 실패하고 OnActivityResult가 호출되지 않습니다. 여기 찾았

[편집 : 링크 스팸 오버런 구글 그룹으로 제거]

+2

실제로 어떤 requestCode> = 0에서도 작동 할 것이다. – whitebrow

+0

감사합니다. 실수로 -1을 보내고 명령이 작동합니다. (나는 활동을 시작합니다.)하지만 데이터를받지 못하기 때문에 코드를 추가해야합니다. = 0 –

28

나는이 같은 문제를 가지고 있었고, 그것을 해결 : 그냥 내 경우에는

android:launchMode="singleInstance" 
+0

얼마나 많은 시간이 걸렸을까요. .. –

+0

이 이슈는 나를 미치게했다, 잘 얼룩졌다 – German

+0

단지 이것에서 2,3 시간을 낭비했다. 여기 생명의 은인. – Maurizio

17

를 제거, 나는하지 않았다 매니페스트에서 android:noHistory 속성이 true로 설정된 활동에서 startActivityForResult을 호출하고 있다는 것을 알고있었습니다. 따라서 더 이상 활동 인스턴스가 없으므로 onActivityResult이 호출되지 않았습니다.

android:launchMode="singleInstance" 

같은

+4

나는 몇 시간 동안이 문제에 봉착했다. 그런 다음 당신의 대답을보고 나는 똑같은 실수를 저질렀다는 것을 깨달았습니다. 이 답변을 주셔서 감사합니다! –

+0

예. 정말 고맙습니다. –

5
android:noHistory="true" 

는 onActivityResult를 중지에서 결과를 받게됩니다.

+0

android : launchMode = "singleTask" 같은 문제가 발생합니다. – geecko

0

내 의도를 만든 후 내가 startActivity() 대신

startActivityForResult()의를 것을를 호출 하였다 만들었다 실수는 때로는 간단한 것들은 지금은 그것을 가지고, 당신 :

관련 문제