返回时不调用 onActivityResult

onActivityResult not being called when going back

我正在尝试将数据向后传递给 activity,但是我永远无法调用我的 onActivityResult 函数。当我启动新的 activity 时,我创建了一个新的意图,如常规

 Intent intent = new Intent(this, NewLoanCost.class);

 intent.putExtra("defaultsArray", jDefaultsArray.toString());
 intent.putExtra("loanSelection", loanSelection);
 intent.putExtra("buyerSellerSelection", buyerSellerSelection);

 startActivity(intent);

当我想返回到之前的 activity 时,我将覆盖后退按钮以创建新的意图并存储数据

@Override
public void onBackPressed() {
    Intent intent = new Intent();

    intent.putExtra("fullCosts", fullCosts.toString());

    setResult(RESULT_OK, intent);

    super.onBackPressed();
}

但在第一个 activity 中,我什至无法让调试提示出现。我错过了一些明显的东西吗?

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    //super.onActivityResult(requestCode, resultCode, data);
    Toast.makeText(this, "onActivityResult", Toast.LENGTH_SHORT).show();
    if (requestCode == 1) {
        if(resultCode == RESULT_OK){
            try {
                jDefaultsArray = new JSONArray(data.getStringExtra("fullCosts"));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

要获得结果,您应该使用 startActivityForResult 而不是 startActivity

使用startActivityForResult.

用这个替换你的代码,然后它应该可以工作:

 Intent intent = new Intent(this, NewLoanCost.class);

 intent.putExtra("defaultsArray", jDefaultsArray.toString());
 intent.putExtra("loanSelection", loanSelection);
 intent.putExtra("buyerSellerSelection", buyerSellerSelection);

 startActivityForResult(intent);

将您的代码更改为

 Intent intent = new Intent(this, NewLoanCost.class);

 intent.putExtra("defaultsArray", jDefaultsArray.toString());
 intent.putExtra("loanSelection", loanSelection);
 intent.putExtra("buyerSellerSelection", buyerSellerSelection);

 startActivityForResult(intent, 1);

第二个参数是一个整数,其中包含您将在 onActivityResult 中使用的请求代码