Идете два занятия назад? - PullRequest
18 голосов
/ 17 июля 2011

У меня есть последовательность действий: Avtivity01 => Avtivity02 => Avtivity03

Вы можете перейти от Avtivity01 до Avtivity02 после нажатия кнопки.

Вы можете перейти от Avtivity02 к Avtivity03 после нажатия кнопки.

-

Я хочу перейти от Activity03 к Activity01 ПРЯМО * после нажатия кнопки.

-

ПРИМЕЧАНИЕ:

Я НЕ хочу использовать Intent, потому что я хочу иметь Activity01 , как будто я нажал на спинукнопка от Activity02

Как это сделать, пожалуйста?

Ответы [ 6 ]

41 голосов
/ 17 июля 2011

Почему вы не можете использовать Intent?Вы можете использовать FLAG_ACTIVITY_CLEAR_TOP , когда нажимаете кнопку. Редактировать: Если вы хотите сохранить исходный экземпляр Activity, вы можете использовать этот флаг вместе с FLAG_ACTIVITY_SINGLE_TOP .

Вы когда-нибудь захотите бытьв состоянии нажать кнопку из Activity03, чтобы вернуться к Activity02?Если вы ВСЕГДА хотите, чтобы он вернулся к Activity01, вы можете альтернативно использовать android:noHistory="true" в Activity02 в манифесте и просто вызвать finish() в Activity03.

4 голосов
/ 06 июня 2017

Вы можете вернуться более чем к одному экрану, на который когда-либо вам нужно, используя намерение, и использовать флаги, чтобы предотвратить возврат к одному экрану:

Intent gotoScreenVar = new Intent(goFromScreenCls.this, goToScreenCls.class);

gotoScreenVar.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(gotoScreenVar);
1 голос
/ 02 января 2019

У меня была такая же проблема,

Краткий ответ: добавьте эту строку к намерению.

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

Длинный ответ:

У меня есть MainActivity, SecondActivity и ThirdActivity, что я хочу сделать, это открыть SecondActivity с MainActivity, а затем ThirdActivity с SecondActivity, и я хочу нажать кнопку в ThirdActivity которые закрывают оба SecondActivity и ThirdActivity без вызова нового MainActivity я хочу, чтобы он работал, поскольку я возвращаюсь к нему, а не создаю новый. И самое главное, что мне нужно, - это чтобы кнопка возврата работала нормально в ThirdActivity вернуться к SecondActivity, если мне нужно изменить некоторые из моих выборов в SecondActivity, поэтому я не могу позвонить finish(); в SecondActivity после запуска ThirdActivity или любых других решениях, таких как android:noHistory="true" в манифест SecondActivity, потому что эти решения убивают SecondActivity, и я не могу вернуться к нему, кнопка возврата назад.

так что этот флаг решил проблему для меня FLAG_ACTIVITY_REORDER_TO_FRONT

FLAG_ACTIVITY_REORDER_TO_FRONT

Если он установлен в намерении, передаваемом в Context.startActivity (), этот флаг приведет к тому, что> запущенное действие будет перенесено в начало стека истории его задачи, если оно> уже выполняется.

перейти к ссылке здесь

поэтому я попробовал этот код, чтобы вернуться к своему MainActivity из ThirdActivity, когда я нажал кнопку в ThirdActivity. Я надеюсь, что это поможет вам.

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
1 голос
/ 19 июля 2011

ссылка имеет хорошую статью.Это поможет вам.Кстати, вы можете использовать FLAG_ACTIVITY_REORDER_TO_FRONT для решения вашей проблемы.

0 голосов
/ 17 июля 2011

Будет работать только с одной строкой.
после вызова вашего третьего занятия позвоните finish() на следующую строку. и это будет работать.

например.
В вашей деятельности 02

Intent thirdActivity = new Intent(this,Activity03.class);
startActivity(thirdActivity);
finish();
0 голосов
/ 17 июля 2011

Вы можете переопределить нажатие кнопки «Назад» на Activity3

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        startActivity(Activity3.this,Activity1.class);
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...