2012-10-24 13 views
6

新しいアクティビティインテントを開始するときにバックスタックをクリアします。タスクのバックスタックをクリアして新しいアクティビティだけを残すにはどうすればいいですか?

私の問題の正確なケースは次のとおりです。 私はこのような活動をしています。A> B> C> D> E 「A」は登録活動、「B」は確認登録活動です。私は、ユーザーがアクティビティ "B"をアクティビティ "A"に戻せなくなったとき、アクティビティ "C"に到達したときもアクティビティ "A"と "B"の両方が役に立たないと思っています。ユーザーはもうそれらに戻ってきます。

「C」からアクティビティ「D」に移動した場合、「C」に戻ることができますが、さらに「E」アクティビティに移動した場合、以前の「C」 "または" D "活動に参加する。

多くの研究の後、私が得た最高のフラグを使用することです:FLAG_ACTIVITY_NO_HISTORYを、しかし、それは私の場合のための2つの問題があります:アクティビティで

  1. 「」ユーザーが離れて自分のアプリケーションから移動すると(のためにホームスクリーンへの例)、それはその活動を破壊し、したがってユーザが入力したすべての情報は失われてしまいます!
  2. アクティビティ "C"ユーザが "D"アクティビティに移動しているのに、ユーザが "E"アクティビティに移動したときにそのアクティビティを削除したい場合は、履歴(バックスタック)に保持します。

私はこの問題の解決策を今まで見つけられませんでしたが、現在のタスクのバックスタックをクリアするものがあれば簡単だろうと思います!

マイ最小SDKのサポートは、事前に5

おかげです。

+2

に可能な複製をナビゲートする前に、アクティビティCを終えます。 http://stackoverflow.com/questions/5794506/android-clear-the-back-stack見る価値がある:http://developer.android.com/guide/components/tasks-and-back-stack.html#クリアする – jrajav

+0

また、http://stackoverflow.com/questions/7121700/remove-all-activities-from-back-stack-while-calling-a-new-activityに似ています – speakingcode

答えて

8

APIレベル11以上を使用している場合は、自分の意図にFLAG_ACTIVITY_CLEAR_TASKを追加するだけで、タスク内の他のすべてのアクティビティがクリアされます。

それ以外の場合、これは役立つかもしれない:あなたは、もはやユーザーがに戻ることができるようにしたい活動を終了するのを Clearing the full Android activity stack on older SDKs (that lack FLAG_ACTIVITY_CLEAR_TASK)

別のアプローチを、だろう。 たとえば、Bに移動する前にActivityA.finish()を呼び出すと、アクティビティがタスクから削除されます。

アクティビティDを起動すると、あなたがCからstartActivityForResult()を使用して、それを起動することができ、あなたはDを閉じたとき、Cに結果を送信し、その後E.

+0

返信いただきありがとうございます、私は最初の他のものを起動する前に、アクティビティに対して "finish()"関数を呼び出すことでアプローチすることができます。 2番目の部分では、アクティビティ "C"はアクティビティ "D"を開始し、アクティビティ "E"は "C"ではなくアクティビティ "D"によって開かれます。それで、アクティビティ "C"への参照をアクティビティ "D"に渡すことができますので、アクティビティ "E"を開始する前にそのアクティビティを破棄できますか? – Elkfrawy

+1

参照を渡すべきではありません。私が言っていることは、startActivityForResult()メソッドを使って "C"から "D"アクティビティを開始できるということです。あなたが "E"に行くことに決めたら、結果をアクティビティ "D"にセットし、それを終えて "C"に送ります。ここで結果を確認し、ユーザーを "E"にリダイレクトします。アクティビティ "C"。それは説明するのが少し複雑です、私はあなたがそれを得ることを願っています。 – kleinsenberg

+0

ええ、これは明らかでした、私はそれを適用し、私が望むように働いた。あなたの助けてくれてありがとう – Elkfrawy

関連する問題