これが問題です。ボタンを押して、アイテムのリストを表示する新しいアクティビティを開始し、ユーザーが任意の数のアイテムを選択できるようにし、[送信]をクリックして、そのデータを新しいアクティビティを呼び出した元のアクティビティに送信するアプリケーションがあります。アイテムのリスト。基本的な構造は次のとおりです。
Activity A -> Activity B (select items, press submit) -> [already running] Activity A (receive sent items)
データのやり取りに問題はありません。私が抱えている問題は、アクティビティAを再起動しようとすると、アクティビティのonCreate()
メソッドを通過することです。onCreate()
メソッドですべてを事前に設定してから、メソッドを介してすでにそこにあるものを補足できるようにしたいので、これを行わない方が好きですonRestart()
。onCreate()
アクティビティを再開するたびにメソッドが呼び出される理由が正確にはわかりません。私の推測は、アクティビティBのアクティビティを呼び出す方法です。
Intent intent = new Intent(this, PatientChartActivity.class);
intent.putExtra("checked", checked);
intent.putStringArrayListExtra("checked", checked);
startActivity(intent);
私はAndroidアクティビティのライフサイクルを見てきましたが、実際に強制する必要がない限り、なぜ自動的に前のアクティビティに戻らないのかわかりません。私が確信していることの1つは、実行中のアクティビティが破棄されていないことです。Log.v(TAG, "DESTROY")
メソッドにログメッセージを入れてonDestroy()
、アクティビティが破壊されないようにします。以前に開始したアクティビティを復元することをシステムに通知するために、アクティビティを開始するときにさまざまなフラグを使用しようとしましたが、それらも機能していないようです。私はそれらを誤解するかもしれません。私はこのトピックについて広範囲に調査しましたが、私が見つけた解決策はどれも役に立ちませんでした。ここ私が見つけた問題は私のものと同じように見えますが、私が探していたものを解決していないようです。また、問題を回避するための他の可能なルートについては、次のリンクを調べましたが、機能しませんでした。
http://www.droidnova.com/use-intents-to-start-other-activities,76.html
http://www.warriorpoint.com/blog/2009/05/24/android-how-to-switch-between-activities/