23

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

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

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

startActivity(new Intent(TerceraActiviry.this, Main.class));
4

4 に答える 4

64

あなたActivityがまだ実行されている場合、このコードは入力せずに前面に移動しますonCreate

Intent openMainActivity = new Intent(TerceraActiviry.this, Main.class);
openMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityIfNeeded(openMainActivity, 0);
于 2012-09-13T15:00:39.530 に答える
3

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

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
  }
}

よろしくお願いします

于 2012-09-13T14:43:15.367 に答える
1

startActivity の代わりに startActivityForResult を使用します。

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

于 2012-09-13T14:37:21.503 に答える
1

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

Intent intent = new Intent(TerceraActiviry.this, Main.class));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2012-09-13T14:43:42.717 に答える