2012-01-14 3 views
0

편집 : 호출 된 활동 객체에서 startActivityForResult을 호출하지 말고 응답자가 대신 호출자의 컨텍스트에서 호출합니다.startActivityForResult를 시도하는 중 NullPointerException이 발생했습니다.

107 Intent intent = new Intent(CallingActivity.this, CalledActivity.class); 
108 CalledActivity calledActivity = new CalledActivity(); 
109 calledActivity.startActivityForResult(intent, CALLED_ACTIVITY_CODE); 

내부 CallingActivity :

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.i(SR.tag,"req=" + requestCode + " res=" + resultCode); //Never getting here 
} 

매니페스트 파일 미리보기 :

<activity android:name=".ui.CallingActivity" 
      android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity android:name=".ui.CalledActivity"></activity> 

예외 :

01-14 11:30:14.850: ERROR/AndroidRuntime(1036): FATAL EXCEPTION: main 
01-14 11:30:14.850: ERROR/AndroidRuntime(1036): java.lang.NullPointerException 
01-14 11:30:14.850: ERROR/AndroidRuntime(1036):  at android.app.Activity.startActivityForResult(Activity.java:2833) 
01-14 11:30:14.850: ERROR/AndroidRuntime(1036):  at com.litvin.app.ui.CallingActivity.onSharedPreferenceChanged(CallingActivity.java:109 ) 
... 

은 마지막 줄에 내 코드, 예외

홈 및 런처의 의도 필터를 .ui.CalledActivity으로 옮길 때마다 정상적으로 작동합니다. 아이콘을 누르면 CalledActivity가 시작됩니다.

많은 비슷한 답변을 보았지만 나에게는 도움이되지 않았습니다.

답변

1

//이

intent.startActivityForResult(intent, CALLED_ACTIVITY_CODE); 
+1

그래서 피 묻은 간단하지만 너무 많은 시간을 낭비 .. 감사합니다 :) –

+0

코드를 수행하는

CalledActivity calledActivity = new CalledActivity(); //comment this line 

//에 대한 객체를 생성 할 필요가 없습니다 "startActivityForResult (Intent, int) 메서드는 Intent 유형에 대해 정의되지 않았습니다." –

1
 Intent intent = new Intent(CallingActivity.this, CalledActivity.class); 
     startActivityForResult(intent, CALLED_ACTIVITY_CODE); 
+0

실제로 호출자의 컨텍스트에서는 호출되며 인 텐트 객체에서는 호출되지 않아야합니다. –

관련 문제