Стек Android Intent — экран входа и главное меню

Когда у меня есть два занятия

Activity A, B;
// A stands for Login Screen
// B stands for Main Application Screen

Приложение начинается с A, затем пользователь выполняет вход, и он будет указан на B

Когда я запускаю B, я добавляю этот флаг в Intent Intent.FLAG_ACTIVITY_CLEAR_TOP, но когда я заканчиваю B, я ожидаю, что это будет последнее действие и я выйду из приложения.

Вместо того, что я ожидал, A выводится на передний план, и пользователь снова остается на экране входа в систему.

Должен ли я начать A с B как startActivityForResult и использовать B в качестве основного действия всего приложения?

Или флаг не работает как надо?


person Marek Sebera    schedule 01.12.2011    source источник


Ответы (2)


Не заморачивайтесь с флагами намерений. Когда действие A запускает действие B после успешного входа в систему, просто вызовите A finish().

Альтернативный, немного более сложный подход состоит в том, чтобы сделать B вашим основным действием, а в методе B onCreate запустить действие A для результата, который должен быть некоторым флагом прохождения/непрохождения. Когда действие A завершается (либо при успешном входе в систему, либо при сбое, либо при выходе пользователя), действие B определяет в onActivityResult, следует ли продолжать или завершить, на основе возвращаемого значения. Это работает, потому что, согласно документы:

В качестве особого случая, если вы вызываете startActivityForResult() с requestCode >= 0 во время начального onCreate(Bundle saveInstanceState)/onResume() вашей активности, ваше окно не будет отображаться до тех пор, пока результат не будет возвращен обратно из начатой ​​активности . Это делается для того, чтобы избежать видимого мерцания при перенаправлении на другое действие.

person Ted Hopp    schedule 01.12.2011

Используйте метод завершения:

Intent lIntent = new Intent();
lIntent.setClass(this, MainActivity.class);
startActivity(lIntent);
finish();
person Dawid Sajdak    schedule 01.12.2011