替换当前活动

Ric*_*lay 58 android android-activity

我需要用新的活动替换当前的活动.也就是说,我想启动一个新活动并从任务堆栈中删除当前活动.

根据文档,似乎最好的方法是按照惯例使用Activity.startActivity启动活动,然后立即调用Activity.finish来关闭当前活动.

这是这些API的有效用法还是我应该做其他事情?

Tus*_*har 57

是.用这种方式使用api很好.

  • 这适用于startActivityForResult吗?如果是这样,结果会在哪里发布? (3认同)
  • 您能否解释一下不使用“intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME)”的区别,如 @Jeremie D 的答案所示? (2认同)

Jer*_*mie 34

实现此目的的正确方法是使用以下内容:

Intent intent = new Intent(this,MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);
startActivity(intent);
this.finish();
Run Code Online (Sandbox Code Playgroud)

代码假定您处于活动状态,否则如果您使用的是片段,请使用getActivity()

这样,活动就会启动,您可以正确设置后退按钮的层次结构,还可以销毁相应的活动.

  • 您能解释一下区别是什么以及如果不使用“setFlags”设置这些标志会发生什么吗? (2认同)

小智 6

尝试使用FLAG_ACTIVITY_TASK_ON_HOME,FLAG_ACTIVITY_NEW_TASK在意向标志


Fan*_*eng 6

您可以在活动中添加 android:launchMode="singleInstance",然后重写 onNewIntent 方法来更新日期

参考 ExoPlayer 演示中的 PlayerActivity