是否可以使用startActivityForResult()
知道是否已针对结果调用某些活动,或者是否仅使用startActivity()
启动?
我需要控制它,如果它调用结果,行为会有所不同。
答案 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 布尔值。