2011-08-11 9 views
3

私は多くのアクティビティを通過するアプリケーションを設計しました。すべてのページで私はログアウトボタンを設定しました。 Logoutをクリックすると、現在のアクティビティを終了し、FLAG_ACTIVITY_CLEAR_TOPを使用してログインアクティビティを開始します。それは動作しますが、戻るボタンを押すと、ログアウトした最後のアクティビティがロードされます。私のアプリケーションからログアウト

いくつかの提案では、すべてのアクティビティを終了して次のアクティビティを開始する必要があることがわかりました。しかし、私はそれを行うことはできません。なぜなら私が戻るボタンを押すと、アクティビティはリロードされますが、すでに終了している以前のアクティビティからデータを取得する必要があるからです。

実際に私がしたいことは、どのページからでも自分のアプリからログアウトしたいということです。何か提案してください。

答えて

0

FLAG_ACTIVITY_NEW_TASKも追加してこれを達成できました。私のAndroidManifestには、起動していたアクティビティにandroid:launchMode="singleTop"もあります。それが最良のアプローチであるかどうかは分かりませんが、機能します。

+0

ありがとうございます、私はすでにこれらを試しましたが、私の状況には使用しません。 – adithi

0

多分、あなたのアクティビティを終了して次のアクティビティを開始することができます。

バックボタンについてあなたはとてもstartActivityOnresult()

を使用することができますので、あなたはどこでもあなたのアプリ内からログアウトする必要があります。

0

各アクティビティのonResumeにユーザがログインしているかどうかをチェックし、ログインしていない場合はログインアクティビティに転送するコードのスニペット(またはユーティリティメソッドへの呼び出し)を追加することもできます。これにより、ログインしなくても使用できないアクティビティがないことを確認し、バックボタンの問題にも役立ちます。

0

すべてのアクティビティが該当するApplicationのサブクラスを作成します。その中に、ユーザーがログアウトするときに終了する必要があるアクティビティの静的なコレクションを維持します。完了する必要がある各アクティビティをonCreateメソッド内のコレクションに追加します。ユーザーがログアウトすると、コレクションを繰り返し処理し、その中の各アクティビティでfinish()を呼び出します。

関連する問題