HomeActivityと4つのアクティビティA、B、C、Dを持つアプリがあります。HomeActivityのボタンをクリックしてstart_activity_A_btn
、アクティビティAにスターを付け、AがBを開始し、BがCを開始し、CがDを開始し、次にHomeActivityに移動するボタンをクリックしたいdone
。
注意:すべてのアクティビティ(A、B、C、D)で、ボタンを押しdata
た後、保存してHomeActivityに戻る必要がありdone
ます。
2 に答える
インテントで次のフラグを使用する必要があります (リンクを確認してください。直面している状況と同様の状況が説明されています): FLAG_ACTIVITY_REORDER_TO_FRONT。したがって、アクティビティ D の完了ボタンの onClickListener では、次のコードを使用する必要があります。
Intent intent = new Intent(this, ActivityAname.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("data", dataYouReceiveFromABCD);
startActivity(intent);
これにより、A アクティビティが再開されます。
ここで、「データ」に関しては、可能であればセパレーターを使用してこのデータを文字列に蓄積し続ける必要があります(このデータが正確に何であるかを教えていないため)。したがって、それがユーザー名とパスワードである場合おそらく決して発生しない文字のランダムな組み合わせ(「246@$ ^」)を使用して2つを分離し、A、B、C、およびDで構築し続ける文字列を作成し続け、最後にDでそれを配置できますインテントの余分な文字列 (上に投稿したコードを確認してください)。それが他の種類のデータである場合、それが役立つ場合はおそらくシリアル化できます。ただし、事前に設定された区切り文字で文字列を使用する場合は、アクティビティ A で行う必要があるのは、アクティビティ A の onResume() メソッドで次のコードを使用することだけです。
if(this.getIntent().getExtras().getString("data") != null)
{
String data = this.getIntent().getExtras().getString("data");
//do some stuff here with that data
}
アクティビティを返すデータが必要な場合は、startActivityForResultを使用してABCDを開始する必要があります。これは、HomeActivityがダイアログを開いているのと非常によく似ており、アクティビティが終了すると([完了]または[キャンセル]を押すかによって異なります)、HomeActivityにonActivityResultが表示されます。