编辑:答案不是调用startActivityForResult
对被调用的Activity对象,而是从调用者的上下文中调用它。NullPointerException while尝试startActivityForResult
这是我的代码,异常的最后一行:
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 )
...
每当我将HOME和LAUNCHER意图过滤器移动到.ui.CalledActivity
时,它工作正常。当我按下图标时它会启动CalledActivity。
我已经浏览了许多类似的答案,但没有为我工作。
那么血腥简单又那么多时间浪费了..谢谢:) – 2012-01-14 10:47:54
您的代码会抛出一个编译错误:“方法startActivityForResult(Intent,int)未定义类型意图” – 2012-10-21 00:59:33