Подтвердить что ты не робот

Как найти последнюю активность, с которой текущая активность открывается в android?

У меня есть одна активность, которая может быть открыта из более 4 или 5 различных действий, поэтому я могу найти, из какой активности называется моя текущая деятельность...

Если какая-нибудь идея, пожалуйста, помогите мне..

4b9b3361

Ответ 1

Возможно, вы захотите добавить дополнительные функции к намерениям, которые вы используете для начала деятельности, чтобы указать, откуда идет речь или что такое запрос.

Например:

Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("caller", "MainActivity");
startActivity(intent);

а затем ваш OtherActivity может обнаружить "вызывающего" в своем onCreate:

String caller     = getIntent().getStringExtra("caller");
Class callerClass = Class.forName(caller);

Ответ 2

У Android есть функция для него, если вы используете startActivityForResult:

ComponentName prev = this.getCallingActivity();

Ответ 3

Поместите некоторые дополнительные функции для разных различных действий.

например:

startActivity(new Intent(this, otherActivity.class).putExtra("from" , "previousActivity"));

и получить дополнительные функции в текущей деятельности как

string act = getIntent().getStringExtra("from");

поэтому "act" укажет вам вызывающую активность.

Ответ 4

Создайте Interfare И добавьте значения для своей деятельности. Затем передайте эти значения в намерении и войдите в Child Activity, посмотрите на этот фрагмент кода

public interface ActivityRefs {
            public static final int ACTIVITY_1 = 1;
            public static final int ACTIVITY_2 = 2;
            public static final int ACTIVITY_3 = 3;
}

Создайте намерение и передайте значение, подобное этому в деятельности Calling

intent.putExtra("callingActivity", ActivityRefs.ACTIVITY_1);

Затем в вызываемой активности

int callingActivityName = getIntent().getIntExtra("callingActivity", 0);

        switch (callingActivityName) {
        case ActivityConstants.ACTIVITY_1:
            // Activity3 is started from Activity1
            break;
        case ActivityConstants.ACTIVITY_2:
            // Activity3 is started from Activity2
            break;
        }

Ответ 5

Я решил это, в моем случае мы находимся на ActivityA до ActivityB, затем хотим вернуться к ActivityA программно, вот мой код

ActivityA:

String currentActivity;
void onCreate(...){
...
currentActivity = this.getClass().getName();
...
}

Затем по вашему намерению (еще в ActivityA):

Intent intent = new Intent(this, ActivityA.class);
intent.putExtra("from", currentActivity);
startActivity(intent);
this.finish();

Теперь на ActivityB:

Class fromClass;
void onCreate(...){
...
String String from = getActivity().getIntent().getStringExtra("from");
try {
    fromClass = Class.forName(from);
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
...
}

Затем по вашему намерению (все еще в ActivityB) для возврата на ActivityA:

Intent intent = new Intent(this, fromClass);
startActivity(intent);
this.finish();