23

我有一个包含 3 个活动的应用程序。

我有主要活动。这调用第二个活动,然后调用第三个活动。我想在不输入 onCreate 的情况下返回主要活动。

这是第三个活动的代码:

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();

您应该使用以下方法在调用者 Activity 上捕获结果:

@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

你 startActivityForResult 而不是 startActivity。

在此处参考 android 开发人员以获取更多信息。

于 2012-09-13T14:37:21.503 回答
1

您想要的启动模式标志是 clearTop。这将返回到主活动的前一个实例,并从活动堆栈中清除第二个和第三个活动。例如,要从代码中执行此操作:

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