A. Если вы можете использовать startActivityForResult
Согласно ответу Зейн Али ниже: Если вы можете запустить Activity с помощью startActivityForResult (), тогда вы можете получить имя вызывающего класса Activity с помощью this.getCallingActivity (). GetClassName ();
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 act2 = new Intent(context, Activity2.class);
act2.putExtra("calling-activity", ActivityConstants.ACTIVITY_1);
// or ActivityConstants.ACTIVITY_3 if called form Activity3
startActivity(act2);
3) Проверьте значение этого дополнительного параметра в Деятельности2 и действуйте соответствующим образом.
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;
}