java - startActivityForResult() 返回 RESULT_CANCELED

标签 java android android-intent android-activity onactivityresult

我有 2 个 Activity 类和 1 个非 Activity 类,它们从构造函数中传递的 Context 调用 startActivityForResult() 。它看起来是这样的:FirstActivity -> NonActivity -> SecondActivity -> FirstActivity。在 SecondActivity 中,有一个自定义对象的 ArrayList,需要将其作为结果传递给 FirstActivity。有一个问题。调用 onActivityResult() 时,即使调用 setResult(RESULT_OK, Intent),结果代码也是 RESULT_CANCELED,但不是 RESULT_OK。这是我的代码:

非 Activity

public void showActivity() {
    Intent intent = new Intent(request, ActivityKorak.class);
    intent.putExtra("data", fields);

    request.startActivityForResult(intent, 1);
}

第二个 Activity

@Override
public void onBackPressed() {
    super.onBackPressed();

    Intent intent = new Intent();
    intent.putExtra("data", fields);
    setResult(Activity.RESULT_OK, intent);

    finish();
}

首次 Activity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    super.onActivityResult(requestCode, resultCode, intent);
    if(resultCode != Activity.RESULT_CANCELED){
        if(requestCode == 1) {
            Bundle extras = intent.getExtras();
            ArrayList<CustomInput> fields = (ArrayList<CustomInput>) extras.getSerializable("data");
        }
    }
}

最佳答案

您只需删除

super.onBackPressed();

在 onBackPressed 方法中

发生的情况是“super.onBackPressed()”将结果代码设置为“RESULT_CANCELED”并完成您的 Activity 。

关于java - startActivityForResult() 返回 RESULT_CANCELED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39581317/

相关文章:

java - 如何在java中本地化基于xml的文件?

Android:从 kotlin 合成迁移到数据绑定(bind)后无法切换可见性

java - 在android中编码HexString

java - Intent 问题: how to use MainActivity from another class "Adapter" to pass data to SecondActivity

java - Spring Cloud Contract 测试适用于 Maven,但不适用于 JUnit 运行

java - <METHOD_NAME> 的类型错误

java - 将泛型转换为其子类

java - For循环原因: VM aborting - Fatal signal 6 (SIGABRT) code=-6

java - getSupportFragmentManager VS getChildFragmentManager

java - 追加到数组与写入文件