2012-02-18 8 views
3

startActivity()で新しいアクティビティを起動してonStop()を呼び出した後、現在のアクティビティのonStop()メソッドで次にどのアクティビティが呼び出されるのかstartActivityを呼び出すときにonStop()の次のアクティビティを検索する

私の唯一のアイデアは現時点で 私はグローバル変数として使用し、onStop()メソッドでintent.getClass()などでチェックします。これは大丈夫でしょうか?何とか迅速かつ汚れたアプローチのように感じます。

ありがとうございました!

編集: だからここはシナリオです:

Activity1は、ユーザーが1つのまたは複数の行を選択し、「送信」、選択したすべての行は、現在のバックグラウンドタスクでサーバーに送信されますクリックするリストビューです。

サブミッシングの前に選択したIDを保存するために私のサービスで配列を使用します。したがって、ユーザーがサブミットする前にリストビューから離れると、この配列はまだ古くなった選択肢で満たされます。

したがって、ユーザーが1つ以上の行を選択して「送信」せずにActivity1を終了した場合は、選択を破棄したいので、Activity1のonStop()メソッドでその配列を消去するメソッドを呼び出します。これはうまくいきますが、Activity1を離れる方法はいくつかあります。たとえば、私は3つのエントリを持つコンテキストメニューを持っていて、それらのすべてが別のアクティビティを開始します。

これで、コンテキストメニューから1つの特別なアクティビティ(アクティビティ2)が選択された場合に、配列値を保持する必要があります。

申し訳ありませんが、それは明確ではありませんが、私はアクティビティのインスタンスについて話すのではなく、一般的な種類のアクティビティについて話しています。

私は、Activity1からActivity2.javaまたはActivity3.javaに切り替えた場合、onStop()メソッドで知る必要があることはすべてです。

Activity1のonStop()は、私の明確な決定または明確でない決定のための適切な場所ではないかもしれませんか?

おかげで再び

答えて

1

質問は少し漠然としているので、あなたは、ここにあなたの意図についてのいくつかの明確化を追加したい場合があります。

デフォルトでは、Acitvityが開始されると、バックスタックと呼ばれるキューに配置されます。オンアクティビティが終了すると、それはデキューされ、前のアクティビティがフォアグラウンドに持ち込まれます。

新しいアクティビティを開始するときに十分に設定しないと、バックスタックに既に存在するアクティビティがあっても、そのアクティビティの新しいインスタンスが作成されます。私はあなたが質問を理解している場合、あなたが探していることになります。

Intent intent = new Intent(getContext(), NewClass.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

これは、言及した活動以外のスタックをクリアし、それがバックスタック内に存在する場合、フォアグラウンドにそれを持って来ます。

This SO threadは、スタックをクリアする方法を示します(Android guide)。

タスクとアクティビティを管理する方法を説明しているhereがありますが、Googleはデフォルトビアビールを操作しないように警告しています。

+0

こんにちは、ちょうど質問を編集しました。これでもう少し明確になることを願っています。ありがとう! – homtg

関連する問題