web-dev-qa-db-ja.com

Android:アクティビティを破棄して新しいアクティビティを開始するインテントフラグ

ログインアクティビティがあるので、このアクティビティは、ユーザー名とパスワードを入力してログインボタンをクリックすると、新しいアクティビティを開始する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ビューに表示されることです。ログインアクティビティを破棄して新しいアクティビティを開始するフラグがあるか、ログアウトするたびにフィールドをリセットする方法がありますか?どちらが良いアプローチですか?

20
Eric Bergman

次の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("");
27
Jack K Fouani

APIレベル11以降のみをサポートしている場合は、 FLAG_ACTIVITY_CLEAR_TASK を使用できるはずです。これにより、すべてのタスクの既存のアクティビティがすべて終了し、ログインアクティビティの新しいインスタンスが作成されます。

4
jhotovy