我有一项 Activity ,很少有其他 Activity 称为。例如:我有Activity1,Activity2,Activity3。
Activity1调用Activity2并传递参数。
Activity3还调用Activity2并传递参数。
现在,基于调用 Activity ,Activity2执行一些任务。
但是我怎么知道哪个 Activity 正在调用Activity2?
有人可以帮我吗?
最佳答案
A.如果可以使用startActivityForResult
按照下面的Zain Ali's answer:如果可以使用startActivityForResult()启动Activity,则可以通过this.getCallingActivity()。getClassName();来获取调用Activity类的名称。
B.如果不能使用startActivityForResult
如果不能使用startActivityForResult(),则可以使用以下方法:
您可以在意图中传递其他参数,在 Activity 中检查值并采取相应措施。
1)定义接口(interface)或常量类以定义整数常量以指示调用 Activity
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 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;
}