A.如果可以使用 startActivityForResult
根据下面的Zain Ali's answer:如果您可以使用 startActivityForResult() 启动 Activity,那么您可以通过 this.getCallingActivity().getClassName(); 获取调用 Activity 类的名称;
B.如果不能使用 startActivityForResult
如果你不能使用 startActivityForResult(),那么你可以使用以下方法:
您可以在意图中传递其他参数,检查活动中的值并采取相应措施。
1) 定义一个接口或常量类来定义整数常量来表示调用活动
public interface ActivityConstants {
public static final int ACTIVITY_1 = 1001;
public static final int ACTIVITY_2 = 1002;
public static final int ACTIVITY_3 = 1003;
}
2) 在调用 Activity2 时在 Intent 中添加额外的参数。
Intent act2 = new Intent(context, Activity2.class);
act2.putExtra("calling-activity", ActivityConstants.ACTIVITY_1);
// or ActivityConstants.ACTIVITY_3 if called form Activity3
startActivity(act2);
3)检查Activity2中这个额外参数的值并采取相应的行动..
int callingActivity = getIntent().getIntExtra("calling-activity", 0);
switch (callingActivity) {
case ActivityConstants.ACTIVITY_1:
// Activity2 is started from Activity1
break;
case ActivityConstants.ACTIVITY_3:
// Activity2 is started from Activity3
break;
}