OnActivityResult 在 Android 中被调用两次
OnActivityResult getting called twice in Android
我使用此代码启动了 activity:
Intent intent = new Intent(this, OneTimeActivity.class);
intent.putExtra(Constants.HOST_KEY, host);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivityForResult(intent, 1000);
由于某种原因,我的 OnActivityResult() 被调用了两次。一次是在我第一次调用 startActivityForResult 时,一次是在结果实际结束时。同样奇怪的是,Intent 数据始终为 null,resultCode 始终为 0
为什么会这样?我不应该一次又一次地从 OnActivityResult() 获得回调吗?我不应该得到我在 setResult() 中指定的结果代码吗?
经过大约 2 小时的调试,看来
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
是问题所在。一旦我删除了一切都按预期工作,我想这是有道理的。我无法清除返回堆栈并期望结果正确返回到我刚刚清除的返回堆栈。
除了 etherton 的回答,还要检查你的 activity 是否声明为 singleTask
。
打开 AndroidManifest.xml
并检查您的 呼叫 activity 的 android:launchMode="singleTask"
。删除此行,它将按预期工作。
注意:如果你真的想要你的activity作为singleTask
那么你必须自己处理你的回调。
我使用此代码启动了 activity:
Intent intent = new Intent(this, OneTimeActivity.class);
intent.putExtra(Constants.HOST_KEY, host);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivityForResult(intent, 1000);
由于某种原因,我的 OnActivityResult() 被调用了两次。一次是在我第一次调用 startActivityForResult 时,一次是在结果实际结束时。同样奇怪的是,Intent 数据始终为 null,resultCode 始终为 0
为什么会这样?我不应该一次又一次地从 OnActivityResult() 获得回调吗?我不应该得到我在 setResult() 中指定的结果代码吗?
经过大约 2 小时的调试,看来
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
是问题所在。一旦我删除了一切都按预期工作,我想这是有道理的。我无法清除返回堆栈并期望结果正确返回到我刚刚清除的返回堆栈。
除了 etherton 的回答,还要检查你的 activity 是否声明为 singleTask
。
打开 AndroidManifest.xml
并检查您的 呼叫 activity 的 android:launchMode="singleTask"
。删除此行,它将按预期工作。
注意:如果你真的想要你的activity作为singleTask
那么你必须自己处理你的回调。