В данном занятии я расскажу вам о том, как работать с бэкстеком и как можно добавить логику авторизации в приложение. Откроем наш проект, зайдем в AuthFragment, С самого начала добавим private SharedPreferencesHelper любимый и проинициализируем его в методе onCreateView. mSharedPreferencesHelper = new SharedPreferencesHelper. И передадим ему Activity. Дальше идем в mOnEnterClickListener, то есть что происходит при нажатии на Enter на вход. Здесь добавляем такую логику: for User user mSharedPreferencesHelper .getUsers. Далее. Для каждого юзера if user. getLogin.equals IgnoreCase, то есть для каждого пользователя мы проверяем его логин, есть ли он в нашем SharedPrefereces, и то же самое сделаем с паролем. getLogin equalsIgnoreCase mLogin.getText toString. И то же самое для пароля, но без equalsIgnoreCase, иначе наша проверка пароля будет работать немножко неправильно. getLogin.equals, не IgnoreCase, просто equals. mPassword, здесь get Password, фигурные скобки. И если такой пользователь найден, то все успешно. Соответственно, мы можем открыть следующий экран приложения. Переносим весь этот код сюда. И добавляем сюда break, чтобы он чтобы цикл прекратил свою работу. Далее добавим переменную boolean isLoginSuccess, которая по умолчанию будет false. И true она станет только тогда, когда логин совпадет с тем логином, который находится внутри пользователя в SharedPreferences. То же самое с паролем. isLoginSuccess = true. if — не сюда, это мы должны сделать снаружи цикла. if isLoginSuccess, то, если он не success, то showMessage R.string.login_error. В ней написано, что ошибка логина — неверный логин или пароль. Давайте посмотрим, как это работает в эмуляторе. Запустим наш эмулятор. Для начала зарегистрируем какого-нибудь пользователя. Введем ему Email: ty@ty .ty. Введем пароль: qwerty. Пароль еще раз: qwerty. Enter, если точнее, зарегистрироваться. Зарегистрировались успешно, но почему-то после успешной регистрации не закрывается данный экран. Давайте попробуем перейти назад. Приложение закрылось. Проблема в том, что у нас неверно настроена обработка по клавише «Назад». Давайте исправим это. Перейдем в SingleFragmentActivity, переопределим метод onBackPressed. Получим SupportFragmentManager. Далее, удалим [НЕРАЗБОРЧИВО] — super.onBackPressed, он нам не нужен. Далее if fragmentManager.getBackStackEntry Count ==, то есть равно 1, то в этом случае, когда BackStackEntryCount = 1, m мы можем сделать finish, иначе сделаем fragment Manager.popBackStack. [ШУМ] Перейдем в AuthFragment, и в onRegisterClickListener в логику нажатия на клавишу зарегистрироваться добавим addToBackStack, чтобы у нас сформировался бэкстек и по нажатии на клавишу «Назад» мы смогли перейти на предыдущий фрагмент. Возьмем Registration Fragment class getName в качестве тега. И в RegistrationFragment после показа сообщения об успешной регистрации добавим следующий код: getFragmentManager popBackStack. Посмотрим, что у нас получилось. Запустим эмулятор. Зарегистрируемся. Email. Пускай будет we@we.ru. Пароль оставим qwe, и повторим его qwe. Зарегистрируемся. Регистрация прошла успешно, экран закрылся, все работает правильно. Введем логин. Логин у нас был we @we. ru. Но мы напишем просто r и введем верный пароль. Нажмем «Войти» — ошибка логина, неверный логин или пароль. Все работает правильно. Давайте посмотрим, что будет, если мы введем верные данные: .ru. Нажмем «Войти» — нас впустило в приложения. Все логика написана правильно. На данном занятии мы с вами изучили то, как можно написать логику авторизации и использовать ее внутри приложения, а также как можно работать с бэкстеком фрагментов.