完成之前的活动,安卓系统?

3
我有这个应用程序流程:
Activity 1-> Activity 2-> Activity 3-> Home Activity
现在当用户从Activity3切换到Home Activity时,我想结束所有先前的活动。因此,用户不能返回到之前的活动。
我不想使用finish(),因为这3个活动都是表单填写。
我尝试了
  Intent.FLAG_ACTIVITY_CLEAR_TOP

但似乎没有生效。

意图.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 应该可以工作。 - NullPointerException
3个回答

8
正确的方法是使用意图标记 FLAG_ACTIVITY_NEW_TASK 和 FLAG_ACTIVITY_CLEAR_TASK。
Intent homeIntent=new Intent(this,HomeActivity.class);

       homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

startActivity(homeIntent);

CLEAR_TASK将清除任务中的所有先前活动(如果有)并使新活动(HomeActivity)成为任务的根活动。此标志应与FLAG_ACTIVITY_NEW_TASK一起使用。

如果您在ActivityHome(正常启动而没有任何标志)处,并希望返回activity_1,同时还希望关闭从任务中清除的activity_2和activity_3,则应使用Intent.FLAG_ACTIVITY_CLEAR_TOP。


2
try with android:nohistory="true" in manifest file

-1

你好,我不确定你在做什么,我曾经遇到过同样的问题,所以和你分享一下。 如果你正在使用addFlags,那么请改用setFlags。 试试这个:intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);而不是intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Intent intent = new Intent(getApplicationContext(),
        DesiredActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接