24

所以我有一个登录活动这个活动膨胀了一个 login.xml 布局,它有一个 USER_NAME 和 PASSWORD EditText 视图,当我输入用户名和密码并单击登录按钮时,我开始一个新的活动。

新的 Activity 有一个 Logout 按钮,它基本上只是启动以前的 Activity,如下所示:

    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

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

问题是用户名和密码在我注销后仍然出现在 EditText 视图中,是否有一个标志会破坏登录活动并开始一个新活动,或者有没有办法在我注销时重置字段?哪种方法更好?

4

2 回答 2

30

您有 2 个选择:

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("");
于 2013-11-05T21:02:35.383 回答
5

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

于 2013-11-05T21:02:56.817 回答