web-dev-qa-db-ja.com

Androidでアクティビティを再開します

3つのアクティビティを持つアプリがあります。

主な活動があります。これは2番目のアクティビティを呼び出し、次に3番目のアクティビティを呼び出します。 onCreateを入力せずにメインアクティビティに戻りたい。

これは、3番目のアクティビティのコードです。

startActivity(new Intent(TerceraActiviry.this, Main.class));
19
Sárzena

Activityがまだ実行中の場合、このコードはonCreateと入力せずに前面に表示します

Intent openMainActivity = new Intent(TerceraActiviry.this, Main.class);
openMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityIfNeeded(openMainActivity, 0);
48
ThePCWizard

前のアクティビティに戻るには、表示されているアクティビティを完了する必要があります。これを使用してください:

finish();

結果に対してアクティビティが開始された場合は、次のように結果を与える必要があります。

Intent intent = new Intent();
intent.putExtra(KEY_RESPONSE, responseData);
setResult(RESULT_OK, intent);
finish();

そして、あなたは呼び出し元のアクティビティで結果をキャッチする必要があります:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  switch (requestCode) {
    // Test for the code you have used to start the Activity
  }
}

よろしくお願いいたします。

2
Spike777

StartActivityではなくstartActivityForResultを使用します。

詳細については、Android devを参照してください こちら

1
Gan

必要な起動モードフラグはclearTopです。これにより、メインアクティビティの前のインスタンスに戻り、アクティビティスタックから2番目と3番目のアクティビティがクリアされます。たとえば、コードからこれを行うには:

Intent intent = new Intent(TerceraActiviry.this, Main.class));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
0
kingraam