0

特定のクラスを持つオブジェクトがバックスタックにあるかどうかを確認したい。そうであれば、FLAG_ACTIVITY_CLEAR_TOP を使用します。そうでない場合は、ルートにポップしてクラスをプッシュします。

スタックに A、C、D があり、B を追加したいとします。B はスタック (ここ) に存在しないため、スタックを A、B にする必要があります (C、D をクリアして B をプッシュします)。

スタックに A、B、C、D がある場合、B をプッシュせずに C、D をポップします。

スタック内のすべてをクリアし、「GoToClass」のインテント パラメータを使用してクラス A をプッシュし、-root-A をロードした後にクラス「GoToClass」をプッシュすることなく、これを行う方法はありますか?

Android のドキュメントから:

public static final int FLAG_ACTIVITY_CLEAR_TOP

設定されていて、起動されているアクティビティが現在のタスクで既に実行されている場合、そのアクティビティの新しいインスタンスを起動する代わりに、その上にある他のすべてのアクティビティが閉じられ、このインテントがに配信されます (現在上)新しいインテントとしての古いアクティビティ。

たとえば、アクティビティ A、B、C、D で構成されるタスクを考えてみましょう。アクティビティ B のコンポーネントに解決されるインテントで D が startActivity() を呼び出すと、C と D は終了し、B は指定されたインテントを受け取ります。となり、スタックは A、B になります。

4

1 に答える 1

1

アクティビティが破棄されるか、バック スタックから削除されると、呼び出される最後のメソッドは on になりonDestroy()ます。onDestroy()メソッドで変数を保存し、これを 共有設定に保存するか、クラス変数を作成して、その変数の値がnullに等しくないことを確認します。変数に何らかの値がある場合、間違いなくonDestroy()メソッドが呼び出され、アクティビティはバックスタックにありません。

于 2013-10-27T07:17:46.350 に答える