检查是否已为结果调用活动

时间:2013-05-25 20:34:29

标签: android android-activity startactivityforresult

是否可以使用startActivityForResult()知道是否已针对结果调用某些活动,或者是否仅使用startActivity()启动?

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

2 个答案:

答案 0 :(得分:143)

当您的活动仅以startActivity()开始时,目标活动中的getCallingActivity()方法将返回null

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

查看getCallingActivity()的文档:

  

返回调用此活动的活动的名称。这是   将setResult()中的数据发送给谁。你可以用它   用于验证收件人是否被允许接收的信息   数据

     
    

注意:如果调用活动不期望结果(即它     没有使用startActivityForResult(Intent, int)形式     包括请求代码),然后调用包将为null。

  
     

<强>返回

     

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

答案 1 :(得分: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;

您不需要解析 false 布尔值。