23

iPhone アプリを Android に移植していますが、ルート アクティビティ以外の各アクティビティをスタックにポップする手段が見つからないようです。

Objective-cでは、以下のようなことをします

[navController popToRootViewControllerAnimated:YES];

アクションの後に各アクティビティで「finish()」を効果的に呼び出すことができるかどうかは誰にもわかりますか?

4

2 に答える 2

39

1 つのアクティビティ (ホーム画面など) を開始し、アプリケーションのスタック内の他のすべてのアクティビティを削除する場合は、次を使用できます。

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Removes other Activities from stack
startActivity(intent);

このイベントを MainActivity (タイトル バーのロゴ クリックなど) にも提供する場合は、FLAG_ACTIVITY_SINGLE_TOPフラグを追加して、それ自体の別のインスタンスがスタックに追加されないようにすることもできます。

于 2011-06-09T19:42:43.300 に答える
3

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOPを見てください: このフラグを使用してルート アクティビティで startActivity を実行すると、その上のすべてのアクティビティが吹き飛ばされます。インテント配信の動作については、ドキュメントを注意深く読む必要があります。

于 2011-06-09T19:44:08.983 に答える