我正在使用按钮处理程序的 startActivityForResult() 启动一个活动,并且我的 onActivityResult() 被立即调用,甚至在目标活动的 onCreate() 被击中之前。
public void onGraphNext (View target) {
Intent i = new Intent(this, AddCommentActivity.class);
startActivityForResult(i,6); // 6 is arbitrary request code
}
. . .
protected void onActivityResult(int requestCode, int resultCode,
Intent returnData) {
if ( (resultCode == RESULT_OK) && (requestCode == 6) ) {
Bundle extras = returnData.getExtras();
comment = extras.getString("comment");
}
}
返回的结果代码为 0,请求代码为 6。在 StackOverflow 的其他地方,我看到有人报告此问题,解决方案是不在清单中的 launchMode 使用 singeInstance。但我使用的是标准。. .
<activity android:name="AddCommentActivity"
android:configChanges="orientation"
android:screenOrientation="portrait"
android:launchMode="standard"></activity>
提前感谢您的任何见解!
编辑: 我做了一个简单的测试程序,当调用者(“启动器”) - 带有 onActivityResult 的活动 - 是一个单一实例并且被调用的活动(“启动者”)是标准时,我可以可靠地重现问题。IE,
<activity android:name="Launcher"
android:screenOrientation="portrait"
android:launchMode="singleInstance"></activity>
<activity android:name="Launchee"
android:screenOrientation="portrait"
android:launchMode="standard"></activity>
这对我来说是个问题,因为在真正的应用程序中,由于其他原因,被调用的必须是单个实例,但它希望有按钮来启动其他活动以请求用户输入。如果我不能使用 startActivityForResult 怎么办?