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. Это завершит все существующие действия во всех задачах и создаст новый экземпляр активности входа.