是否有可能知道是否已调用某些活动以获得结果,使用startActivityForResult()
或是否仅开始使用startActivity()
?
我需要控制它,如果它要求结果,行为会有所不同。
是否有可能知道是否已调用某些活动以获得结果,使用startActivityForResult()
或是否仅开始使用startActivity()
?
我需要控制它,如果它要求结果,行为会有所不同。
当您的活动仅由目标活动中startActivity()
的getCallingActivity()
方法启动时将返回null
。
当它被调用时,startActivityForResult()
它将返回调用活动的名称。
请参阅文档getCallingActivity()
:
返回调用此活动的活动的名称。这就是将其中的数据
setResult()
发送给谁。您可以使用此信息来验证是否允许接收者接收数据。注意:如果调用活动不期望结果(即它没有使用
startActivityForResult(Intent, int)
包含请求代码的表单),那么调用包将为空。退货
将收到您的回复的活动的 ComponentName,如果没有,则返回 null。
您可以在意图中添加额外内容来解析布尔值。
//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;
您不需要解析错误的布尔值。