[解決済み] アンドロイド アクティビティスタックを消去する
2022-05-14 09:04:29
質問
アプリケーションにいくつかのアクティビティがあり、フローが非常に複雑です。ログアウトをクリックすると、ログイン画面に遷移し、そこからキャンセルボタンで終了することができます(呼び出しは
system.exit(0)
)
終了または戻るボタンを押すと、スタックからアクティビティが呼び出されます :( ログイン画面に到達したときに、スタック内のすべてのアクティビティをクリアするにはどうすればよいですか? コール
finish()
を呼び出すことは、非常に多くのアクティビティがあり、ネイティブカメラを呼び出すアクティビティなど、アクティブなときに閉じることができないアクティビティがあるため、実用的ではありません。
validateuser logoutuser = new validateuser();
logoutuser.logOut();
Intent loginscreen = new Intent(homepage.this, Login2.class);
(homepage.this).finish();
loginscreen.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(loginscreen);
どのように解決するのですか?
ほとんどの方が間違っています。既存のアクティビティスタックを中にあるものに関係なく閉じ、新しいルートを作成したい場合、正しいフラグのセットは次のとおりです。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
ドキュメントより :
public static final int FLAG_ACTIVITY_CLEAR_TASK
APIレベル11で追加に渡されたIntentに設定されている場合
Context.startActivity()
に渡されるIntentに設定された場合、このフラグにより、アクティビティに関連する既存のタスクは がクリアされ、アクティビティが開始されます。 アクティビティが開始される前にクリアされる。つまり、アクティビティは空のタスクの新しいルートになり、古いアクティビティは終了する。 の新しいルートとなり、古いアクティビティは終了します。これは と組み合わせてのみ使用できる。FLAG_ACTIVITY_NEW_TASK
.
関連
-
プログラム "git.exe "を実行できない場合の正しい解決方法です。CreateProcessエラー=2
-
エラーが発生しました。ArrayAdapter は、リソース ID が TextView である必要があります。
-
Android カスタムスピナーコントロールのドロップダウン・ボックスの実装
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み】Androidで透明なActivityを作成する方法は?
-
[解決済み】ログアウト時にアクティビティ履歴をクリアすると、「戻る」ボタンでログイン中のみのアクティビティを開けなくなる。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
armeabi-v7a armeabi arm64-v8a パラメータの意味説明
-
android.os の NetworkOnMainThreadException。
-
AndroidエミュレーターのADBサーバーがACKしない問題
-
Android のパッケージングに失敗し、Android リソースのリンクに失敗したことを示すプロンプトが表示される
-
指定された子にはすでに親がいます。まず、その子の親に対して removeView() をコールする必要があります。
-
Android基本アプレット
-
[解決済み] アンドロイド バックスタックをクリアする
-
[解決済み] Androidのアクティビティを終了させて、戻るボタンからアクセスできないようにするにはどうすればよいですか?
-
[解決済み] Androidです。バックスタックから以前のアクティビティをすべて削除する
-
[解決済み] Androidでユーザーの非アクティブを検出する方法