34

我之前完成活动有问题。我想开始另一个活动并完成当前活动。当我使用finish它时,它并没有退出当前的活动。

如何退出之前的活动?

4

7 回答 7

120

intent您需要context先使用startActivity. 之后,您可以从您重定向的位置获取finish当前信息。activity

 Intent intent = new Intent(this, FirstActivity.class);// New activity
 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 startActivity(intent);
 finish(); // Call once you redirect to another activity

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)- 清除活动堆栈。如果您不想清除活动堆栈。请不要使用那个标志。

于 2013-09-23T10:42:04.207 回答
8
Intent i = new Intent(this,NewLaunchingActivity.Class);
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Call Only, if you wants to clears the activity stack else ignore it. 
    startActivity(i);
    finish();

Intent.FLAG_ACTIVITY_CLEAR_TOP 如果要清除活动堆栈,请添加 Intent Flag ,否则忽略它。在此处阅读有关此内容的更多信息。

于 2013-09-23T10:50:58.887 回答
6

最好的 - 也是最简单的 - 解决方案可能是这样的:

Intent intent = new Intent(this, OtherActivity.class);
startActivity(intent);
finishAndRemoveTask();

文档finishAndRemoveTask()

当您的活动完成并应该关闭时调用它,并且作为完成任务的根活动的一部分,该任务应该被完全删除。

那是你要找的吗?

于 2020-11-20T11:56:43.977 回答
1
  1. 在清单文件中创建您的活动 A:launchMode = "singleInstance"
  2. 当用户单击新建时,执行FirstActivity.fa.finish();并调用新的 Intent。
  3. 当用户点击修改时,调用新的 Intent 或简单地完成活动 B。
于 2014-04-15T10:38:18.637 回答
1
startActivity(new Intent(context, ListofProducts.class)
    .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK));
于 2016-06-06T23:57:26.110 回答
1

一个简单的例子可以是(Kotlin)

val intent = intent(this,exampleSecondActivity::class.java)
startActivity(intent)
finsih() //this will do all the work for you

当我从启动活动导航到主屏幕时,它对我有用

于 2021-08-30T09:28:39.793 回答
-2

例如:您正在使用两个活动,如果您想从活动 A 切换到活动 B

像这样简单地给。

          Intent intent = new Intent(A.this, B.class);
         startActivity(intent);
         finish();
于 2013-09-23T10:42:19.637 回答