gpt4 book ai didi

java - Activity 完成时 resultCode 的默认值

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:19:58 26 4
gpt4 key购买 nike

这可能是一个基本问题,但我希望能弄清楚一些。

我想做的是:1) 使用 requestCode 启动一个 Activity ,并处理两个操作onActivityResult,一个使用 RESULT_OK,另一个使用 RESULT_CANCELLED。我明确说明了每一个。

即使我仅使用后退按钮关闭 Activity 而未设置任何结果,返回堆栈中的 Activity 也会收到 RESULT_CANCELLED。

通过源代码,我看到 RESULT_CANCELLED 是结果代码的默认值,结果代码总是被发回。

enter image description here

enter image description here

我没看错吗?这是否经常发生?还是我在申请中做错了什么?

来源:https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/Activity.java

最佳答案

当你启动的Activity重新启动时,这个Activity的onActivityResult(..)方法会在onResume()方法被调用之前被调用。检查Doc for Activity

默认的 resultCode 是 RESULT_CANCELLED。

您必须在启动的 Activity 中显式调用 setResult(int) 来更改 resultCode 的值。

这就是为什么在 onActivityResult 方法中检查 resultCode == RESULT_OK 很重要。 因为即使您没有调用 startActivityForResult 也可以调用 onActivityResult。

这可能会造成混淆,但这是默认行为。

  @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == YOUR_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// so some work
}
}
}

关于java - Activity 完成时 resultCode 的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33838890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com