Android:用于销毁活动并启动新活动的Intent标志

24

我有一个登录活动(Login Activity)。该活动会加载(login.xml)布局,其中包含一个用户名(USER_NAME)和密码(PASSWORD)的EditText视图。当我输入用户名和密码并单击“登录”按钮时,我会启动一个新的活动。

新活动有一个注销(Logout)按钮,它只是简单地启动前一个活动,如下所示:

    Intent loginIntent = new Intent(getActivity(), Login.class);
    loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    getActivity().startActivity(loginIntent);

根据Android文档,该标志的作用如下:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

如果设置了此标志,并且要启动的活动已经在当前任务中运行, 则不会启动该活动的新实例,而是将其上面的所有其他活动关闭, 并将此意图作为新意图传递给(现在在顶部的)旧活动。

问题是,在我注销后,用户名和密码仍然出现在EditText视图中,是否有一种标志可以销毁登录活动并启动新活动,或者是否有一种方法可以在注销时重置字段?哪种方法更好?
2个回答

30

你有两个选择:

1 - 在成功登录后杀死登录活动

Intent loginIntent = new Intent(getActivity(), Login.class);
    loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    getActivity().startActivity(loginIntent);
finish();

2 - 清空值,然后开始新活动

edittext_username.setText("");
edittext_password.setText("");

我有以下的活动流程, 1 -> 2 -> 3 -> 4 -> 5 -> 在第5个活动上点击按钮时,我想要保留数据并跳转到第2个活动。所以基本上我想要清除第3、4、5个活动并带着之前填写的旧数据去到第2个活动。 根据文档 loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 无法正常工作。请帮帮我,我真的卡在这个问题上了。 - Sagar Panwala

5
如果您只支持API级别11+,则应该能够使用FLAG_ACTIVITY_CLEAR_TASK。这将完成所有任务中现有活动的工作,并创建登录活动的新实例。

1
我尝试了那个标志,但它没有完成或销毁登录活动,似乎只是把它带到了最前面。 - Eric Bergman
有趣。根据文档,FLAG_ACTIVITY_CLEAR_TOP 应该会结束并重新创建活动(只要您不与 FLAG_ACTIVITY_SINGLE_TOP 一起使用,并且您的启动模式是默认的“多个”)。 - jhotovy

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