我有两个活动类和一个非活动类,它们从构造函数中传递的上下文调用startActivityForresult()。这就是它的样子:firstactivity->nonactivity->secondactivity->firstactivity。在secondactivity中,有一个自定义对象的arraylist需要作为结果传递给firstactivity。有个问题。当onActivityResult()被调用时,resultcode是result_canceled,但不是result_ok,即使调用了setresult(result_ok,intent)。这是我的代码:
不活跃

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

    request.startActivityForResult(intent, 1);
}

第二活动
@Override
public void onBackPressed() {
    super.onBackPressed();

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

    finish();
}

第一次活动
@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”,并完成您的活动。

10-05 18:00