Android: Intent Flag, чтобы уничтожить активность и начать новый
Итак, у меня есть активность входа
Эта активность раздувает макет login.xml, который имеет USER_NAME и PASSWORD EditText Views, когда я ввожу имя пользователя и пароль и нажимаю кнопку "Логин", я запускаю новое действие.
В новой операции есть кнопка "Выход", которая в основном запускает предыдущую операцию, например:
Intent loginIntent = new Intent(getActivity(), Login.class);
loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
getActivity().startActivity(loginIntent);
В соответствии с Документацией для Android флаг выполняет следующие действия:
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP
Если установлено, и запущенная деятельность уже запущена в текущей задачи, то вместо запуска нового экземпляра этого деятельность, все другие мероприятия поверх нее будут закрыты и это намерение будет передано (сейчас сверху) старой деятельности как новое намерение.
Проблема заключается в том, что имя пользователя и пароль по-прежнему отображаются в представлениях EditText после выхода из системы, есть ли флаг, который уничтожает активность входа и запускает новый, или есть способ reset полей при каждом выходе из системы? Какой подход лучше?
Ответы
Ответ 1
У вас есть 2 варианта:
1 - Убейте активность входа после успешного входа в систему
Intent loginIntent = new Intent(getActivity(), Login.class);
loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
getActivity().startActivity(loginIntent);
finish();
2 - очистить значения, а затем начать новую активность.
edittext_username.setText("");
edittext_password.setText("");
Ответ 2
Если вы поддерживаете только уровни API 11+, вы можете использовать FLAG_ACTIVITY_CLEAR_TASK. Это завершит все существующие действия во всех задачах и создаст новый экземпляр активности входа.