ログインアクティビティがあるので、このアクティビティは、ユーザー名とパスワードを入力してログインボタンをクリックすると、新しいアクティビティを開始するUSER_NAMEおよびPASSWORD EditTextビューを持つlogin.xmlレイアウトを拡張します。
新しいアクティビティには、基本的に次のように前のアクティビティを開始するログアウトボタンがあります。
Intent loginIntent = new Intent(getActivity(), Login.class);
loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
getActivity().startActivity(loginIntent);
Android Documentationによれば、フラグは次のことを行います。
http://developer.Android.com/reference/Android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP
設定されていて、起動されているアクティビティが現在のタスクで既に実行されている場合、そのアクティビティの新しいインスタンスを起動する代わりに、その上にある他のすべてのアクティビティが閉じられ、このインテントが(現在top)新しいインテントとしての古いアクティビティ。
問題は、ログアウト後もユーザー名とパスワードがEditTextビューに表示されることです。ログインアクティビティを破棄して新しいアクティビティを開始するフラグがあるか、ログアウトするたびにフィールドをリセットする方法がありますか?どちらが良いアプローチですか?
次の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("");
APIレベル11以降のみをサポートしている場合は、 FLAG_ACTIVITY_CLEAR_TASK を使用できるはずです。これにより、すべてのタスクの既存のアクティビティがすべて終了し、ログインアクティビティの新しいインスタンスが作成されます。