在Android中启动新活动并完成当前活动?

pix*_*xel 67 flags android android-activity start-activity

目前我正在开始一个新的,Activity并呼吁finish当前的.

是否有任何可以传递给Intent它的标志,可以在Activity不需要finish从代码中手动调用的情况下完成当前的操作?

Sim*_*iak 120

您可以使用finish()方法或您可以使用:

android:noHistory="true"
Run Code Online (Sandbox Code Playgroud)

然后就没有必要再打电话finish()了.

<activity android:name=".ClassName" android:noHistory="true" ... />
Run Code Online (Sandbox Code Playgroud)

  • android:noHistory ="true"与finish()不同! (22认同)
  • 你确定这跟你说的一样吗?来自android docs:FLAG_ACTIVITY_NO_HISTORY如果设置,新活动不会保留在历史堆栈中.一旦用户离开它,活动就完成了.这也可以使用noHistory属性设置. (7认同)
  • 只需使用finish(),不要使用noHistory (2认同)

Avi*_*nku 76

使用finish这样:

Intent i = new Intent(Main_Menu.this, NextActivity.class);
finish();  //Kill the activity from which you will go to next activity 
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

FLAG_ACTIVITY_NO_HISTORY反其道而行之.新活动未保存在历史记录中,而OP希望之前的活动完成.

要了解有关使用Intent.FLAG_ACTIVITY_NO_HISTORY阅读的更多信息:http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_HISTORY

  • 不会`完成()`想要杀死当前的活动?你怎么期望它到达下一行`startActivity(i)`?对我来说看起来既危险又意外 (11认同)
  • @Michael Calls是异步的startActivity()将被调用. (4认同)
  • FLAG_ACTIVITY_NO_HISTORY则相反.新活动未保存在历史记录中,而我希望之前的活动完成. (3认同)
  • @tomi你可以解释这个"调用异步startActivity()将被调用." 更确切地说? (3认同)

10s*_*10s 6

FLAG_ACTIVITY_NO_HISTORY 在用户转到另一个活动后开始您希望完成的活动时。

http://developer.android.com/reference/android/content/Intent.html#FLAG%5FACTIVITY%5FNO%5FHISTORY

  • 是的,这就是我说的。您希望完成的活动 A,从活动 A 访问的活动 B。使用我提到的标志启动活动 A,因此当用户从活动 a 漫游到活动 B 时,活动 A 已完成。正如我在回答中提到的:“......开始你希望完成的活动时......”。这与确认的答案相同。 (3认同)
  • FLAG_ACTIVITY_NO_HISTORY 则相反。新活动未保存在历史记录中,而我希望之前的活动已完成。 (2认同)