我有一个活动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