检测活动开始结果

San*_*hav 7 android android-activity

我有一个活动,假设"活动A",我从两个方式开始
a)StartActivity()
b)StartActivityForResult()
现在我有几个方法对活动开始的方式有不同的行为.现在我想检测到"Activity A"是为了结果而启动的.那么我的问题是我们如何检测到活动是为了结果而开始的?我不想通过意图发送数据.还有其他更通用的方法吗?

谢谢.

Joa*_*huk 15

这个答案

当您的活动仅由startActivity()启动时,目标活动中的getCallingActivity()方法将返回null.当它被startActivityForResult()调用时,它将返回调用活动的名称.

例:

if (getCallingActivity() == null) {
    //This Activity was called by startActivity 
} else {
   //This Activity was called by startActivityForResult
}
Run Code Online (Sandbox Code Playgroud)

  • 应该是正确的答案;) (2认同)

Arc*_*pgc -1

调用时发送一些布尔额外值

intent.putExtra("mBool", true);
startActivityForResult(intent);
Run Code Online (Sandbox Code Playgroud)

根据该值,执行相应的操作。

if(getIntent().hasExtra("mBool")){

//ForResult
}else{

//default
}
Run Code Online (Sandbox Code Playgroud)