我有一项 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;
        }

10-08 18:09