88

是否有可能知道是否已调用某些活动以获得结果,使用startActivityForResult()或是否仅开始使用startActivity()

我需要控制它,如果它要求结果,行为会有所不同。

4

2 回答 2

178

当您的活动仅由目标活动中startActivity()getCallingActivity()方法启动时将返回null

当它被调用时,startActivityForResult()它将返回调用活动的名称。

请参阅文档getCallingActivity()

返回调用此活动的活动的名称。这就是将其中的数据setResult()发送给谁。您可以使用此信息来验证是否允许接收者接收数据。

注意:如果调用活动不期望结果(即它没有使用startActivityForResult(Intent, int)包含请求代码的表单),那么调用包将为空。

退货

将收到您的回复的活动的 ComponentName,如果没有,则返回 null。

于 2013-05-25T20:46:36.333 回答
0

您可以在意图中添加额外内容来解析布尔值。

//First Activity
Intent i = new Intent(FirstActivity.this, SecondActiviy.class);   
boolean isForResult = true;
i.putExtra("for-result", isForResult);

然后在第二个活动上获取值:

//Second Activity
boolean isForResult = getIntent().getBooleanExtra("for-result" , false);

通过这种方式,您可以通过全局布尔值了解您是否开始一项活动以获得结果。如果您不添加额外的布尔值,则默认值为 false。威奇的意思。

//Not necesary at all.
boolean isForResult = false;

您不需要解析错误的布尔值。

于 2021-04-05T23:18:14.770 回答