Страницы

Поиск по вопросам

вторник, 16 июля 2019 г.

Как выстроить нужную логику переходов между activity и нажатия на кнопку back?

Здравствуйте! Как говорится:
"Повторение — мать учения!"
В сотый раз возникает вот такой вопрос. Есть несколько активити (заменить на фрагменты не предлагать), нужно организовать переходы между ними.
Т.е. либо мы заходим после авторизации сразу на главный экран закрытой части (MainActivtiy), либо идем создавать код доступа (который позволяет не вводить каждый раз логин и пароль). НО мы уже авторизовались!
Я знаю несколько способов решения подобной задачи:
android:parentActivityName в манифесте
startActivityForResult() с последующим onActivityResult()
Ну и onBackPressed()
Только постоянно получается путаница - какая-то активити сохраняется или переходы нажатием кнопки назад закольцовываются... finish() вызываю всегда, когда обрабатываю нажатие назад или когда setResult(RESULT_CANCELLED);
Картинка:

Синий и зеленый идеальный сценарий, интересует сценарий красными стрелками сделаный. Проще говоря, когда мы прошли авторизацию и перехотели делать код доступа, мы должны перейти на экран MainActivity.
Сценарий:
Начало, переходим к авторизации.
Авторизовались. Пошли создавать код доступа codeEnter.
Перешли на следующий экран preConf.
Вернулись на codeEnter.
Вернулись на LoginActivity.
Вернулись на StartActivity.
Важно, чтобы один и тот же сценарий выполнялся по нажатию на кнопку назад (принципиально), actionBar забудем на время.


Ответ

Если я Вас, @Garf1eld, правильно понял, то Вам нужен способ верного перехода на MainActivity, если пользователь авторизовался. Я могу предложить только проверку: онлайн -> послать запрос на сервак и сверить ответ локально. оффлайн (не знаю назначение оффлайн авторизации на смартфоне, но все же) -> после успешной авторизации сохранить в SharedPreferences значение ключа boolean enter = true. Если не авторизован, то enter = false, если выходит из аккаунта, то присвоить enter = false Проверка на успешную авторизацию. Если "да", то на MainActivity // код для **офлайн** версии. if (enter == true) { // авторизован, переходим к приложению startActivity(new Intent(StartActivity.this, MainActivity.class); } else { // не авторизован, переходим к активности авторизации startActivity(new Intent(StartActivity.this, AutorizationActivity.class) } UPD Можно попробовать кастомизировать onBackPressed(); @Override public void onBackPressed() { startActivity(new Intent(ТЕКУЩАЯ_АКТИВНОСТЬ.this, ППВСА.class)); // ППВСА - ПРЕДЫДУЩАЯ ПО ВАШЕЙ СТРУКТУРЕ АКТИВНОСТЬ // задать кастомизацию в каждом классе }

Комментариев нет:

Отправить комментарий