5

私は6つのアクティビティを通過するアプリの一種のウィザードを持っています。

だから私は呼ぶ:

主な活動-コールオプション1-コールオプション2-コールオプション3-コールオプション4-コールオプション5

ここで、オプション5で、アクション全体をデータベースに保存します。その時点で、メインアクティビティに戻り、オプション1、2、3、4、および5を破棄する必要があります。

オプション5がデータベースに保存されるまで、戻って変更を加え、オプション5に進んで保存できるようにする必要があります。

それを行うための適切な方法は、私がどういうわけか次のようなメソッドを作成することです。

private void cleanStack(){
   Option1.finish();
   Option2.finish();
   Option3.finish();
   Option4.finish();
   Option5.finish();
}

そして、メインアクティビティを開始(または再開)しますか?

Tnx

4

2 に答える 2

7

以下を使用してスタックをクリアします。

Intent intent = new Intent ( this , MainActivity.class );
intent.addFlags ( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity ( intent );

このように、スタックには次のものがあるため、メイン アクティビティ -> オプション 1 を呼び出す -> オプション 2 を呼び出す -> オプション 3 を呼び出す -> オプション 4 を呼び出す -> オプション 5 を呼び出す

clear topフラグを使用してMainActivityを開始すると、MainActivityの上部にあるスタック内のすべてのアクティビティが終了します。

于 2012-09-24T14:12:43.997 に答える
3

私がすることは、すべてのアクティビティを終了するのではなく、MainActivity にコールバックするインテントを作成することです。

メソッドを使用しsetFlagsて、このインテントにFLAG_ACTIVITY_CLEAR_TOP.

これにより、スタックがチェックされ、MainActivity のインスタンスが既に存在するかどうかが確認されます。存在する場合は、MainActivity を再起動してスタックの一番上に配置する代わりに、そのアクティビティを前面に移動し、その上のすべてのアクティビティをクリアします。

MainActivity がオプション 1 ~ 5 からの情報を必要とする場合は、データを更新する必要がある場合があります。CLEAR_TOP は、ほとんどの場合、MainActivity の古いインスタンスを完全に再作成するのではなく、フォーカスするためです (onCreate呼び出されませんが、呼び出されonStartますonResume)。

Intent クラスのドキュメントは次のとおりです。行き詰まった場合のナビゲーションに役立つ他のフラグがあります。幸運を!

于 2012-09-24T14:12:31.480 に答える