Android:Intent Flag用于销毁活动并启动新活动

Eri*_*man 20 flags android android-intent android-activity

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

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

    Intent loginIntent = new Intent(getActivity(), Login.class);
    loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    getActivity().startActivity(loginIntent);
Run Code Online (Sandbox Code Playgroud)

根据Android Documentation,该标志执行以下操作:

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

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在开启) top)旧活动作为新的意图.

问题是,在我注销后,用户名和密码仍然出现在EditText视图中,是否有一个破坏Login活动的Flag并且只是启动一个新的或者是否有办法在我注销时重置字段?哪种方法更好?

Jac*_*ani 27

你有2个选择:

1 - 成功登录后终止登录活动

Intent loginIntent = new Intent(getActivity(), Login.class);
    loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    getActivity().startActivity(loginIntent);
finish();
Run Code Online (Sandbox Code Playgroud)

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

edittext_username.setText("");
edittext_password.setText("");
Run Code Online (Sandbox Code Playgroud)


小智 5

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