如何从一个接收到新意图的活动中获取结果



我有一个活动A,它启动活动B来获取结果。活动B启动另一个活动C。C再次启动活动B,并清除顶标志。

现在当我用setResult(RESULT_OK)完成活动B时,我在活动a中收到0(RESULT_CANCELLED)

如何从活动A中获得相同的结果?

这里有一个方法-

在活动B中,我们使用startActivityForResult()启动活动C,并传递用于识别返回结果的请求代码:

// Launch activity C for a result
Intent intent = new Intent(this, ActC.class);
startActivityForResult(intent, REQUEST_CODE_C)

在活动C中,我们可以使用setResult()方法来设置结果代码和在活动B结束时需要返回的任何数据。例如:

// Set the result code and data to be returned to activity B
Intent result = new Intent();
result.putExtra(EXTRA_RESULT, resultData);
setResult(RESULT_OK, result);
// Finish activity C
finish();

那么在活动B中,我们可以实现onActivityResult()方法来处理从活动c返回的结果。在这个方法中,您可以使用getIntent()方法来检索结果数据:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check if the result is from activity C
if (requestCode == REQUEST_CODE_C) {
// Check if the result was successful
if (resultCode == RESULT_OK) {
// Get the result data from the intent
String result = data.getStringExtra(EXTRA_RESULT);
}
}
}

通过咨询朋友,我最终解决了这个问题。我以前只使用FLAG_ACTIVITY_CLEAR_TOP,但现在我使用两个标志,它解决了我的问题

Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP

最新更新