我有一个包含3个活动的应用程序。
我有一个主要活动。它调用第二个活动,然后再调用第三个活动。我想在不进入onCreate的情况下返回到主活动。
这是第三个活动的代码:
startActivity(new Intent(TerceraActiviry.this, Main.class));
我有一个包含3个活动的应用程序。
我有一个主要活动。它调用第二个活动,然后再调用第三个活动。我想在不进入onCreate的情况下返回到主活动。
这是第三个活动的代码:
startActivity(new Intent(TerceraActiviry.this, Main.class));
Activity
仍在运行,这段代码将使其前置而不会进入onCreate
。Intent openMainActivity = new Intent(TerceraActiviry.this, Main.class);
openMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityIfNeeded(openMainActivity, 0);
为了返回到之前的Activity,你需要结束当前正在显示的Activity,可以使用以下代码:
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
}
}
您需要的启动模式标志是 clearTop。这将返回到先前的主活动实例并清除第二个和第三个活动堆栈。例如,要从代码中执行此操作:
Intent intent = new Intent(TerceraActiviry.this, Main.class));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
你应该使用 startActivityForResult 而不是 startActivity。
更多信息请参考安卓开发文档 这里。