活动完成时resultCode的默认值

Nit*_*ddy 5 java android android-activity

这可能是一个基本问题,但我希望得到一些清晰.

我要做的是:1)使用requestCode启动一个活动,并在onActivityResult中处理两个操作,一个使用RESULT_OK,另一个使用RESULT_CANCELLED.我明确说明了每一个.

即使我只使用后退按钮关闭活动而没有设置任何结果,后端堆栈中的Activity也会收到RESULT_CANCELLED.

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

在此输入图像描述

在此输入图像描述

我正在读这个,这是不是一直发生的事情?或者我在申请中做错了什么?

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

Eri*_*Liu 6

当您的启动Activity重新启动时,在调用onResume()方法之前调用此Activity的onActivityResult(..)方法.检查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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Var*_*mar 2

您必须始终通过 setResult() 方法提供结果代码