【问题标题】:Android: Intent Flag to destroy activity and start new oneAndroid:意图标志破坏活动并开始新的活动
【发布时间】:2013-11-16 21:39:27
【问题描述】:

所以我有一个登录活动 当我输入用户名和密码并单击登录按钮时,我会启动一个新的 Activity。

新的 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 视图中,是否有一个标志会破坏登录活动并开始一个新活动,或者有没有办法在我注销时重置字段?哪种方法更好?

【问题讨论】:

    标签: android android-intent android-activity flags


    【解决方案1】:

    你有两个选择:

    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);不管用。请帮帮我,我真的被这个问题困住了。
    【解决方案2】:

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

    【讨论】:

    • 我试过那个标志,但它没有完成或破坏登录活动,它似乎只是把它带到了前面。
    • 有趣。根据文档,FLAG_ACTIVITY_CLEAR_TOP 也应该完成并重新创建活动(只要您没有将 FLAG_ACTIVITY_SINGLE_TOP 与它一起使用并且您的启动模式是默认的“多个”)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2016-06-30
    • 2013-04-07
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多