【问题标题】:Android prevent going back to previous activitiesAndroid防止回到以前的活动
【发布时间】:2018-02-05 22:09:10
【问题描述】:

我正在开发一个 Android 应用程序,我想阻止在用户登录后返回登录活动。我尝试了 Intent.FLAG_ACTIVITY_CLEAR_TASK,但它不起作用

Intent intent = new Intent(SignInActivity.this, FirstPage.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

我也尝试在启动 Activity 后立即添加完成,但这只会给我一个泄漏的窗口错误。

Intent intent = new Intent(SignInActivity.this, FirstPage.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();

我的活动路径是:

MainActivity(我的应用程序的描述) SignInActivity(登录)-> First(登录)。

用户可以在 MainActivity 和 SigInActivity 之间来回切换。如何防止用户从 FirstPage 返回 SignInActivity 或 MainActivity?

有什么想法吗?谢谢!

【问题讨论】:

    标签: java android android-studio android-activity android-lifecycle


    【解决方案1】:

    调用finish() 将结束活动,并且不会将其作为可以返回的活动放在堆栈中。您需要查看导致泄漏窗口错误的原因(例如,当您完成活动时在屏幕上留下通知)并解决该问题,而不是因为您有泄漏窗口错误而不使用完成。

    【讨论】:

    • 谢谢!我已经修复了由 progressDialog 引起的泄漏窗口错误。
    • 我猜那也解决了您的其他问题?
    【解决方案2】:

    使用FLAG_ACTIVITY_NEW_TASK,您的活动将成为历史堆栈中新任务的开始。尝试同时使用这两个标志(NEW_TASK 和 CLEAR_TOP)。

    你也可以覆盖你的 onBackPressed 方法。

    @Override
    public void onBackPressed() {
          return; 
    }
    

    This的帖子解决了一个很相似的问题,值得一看!

    【讨论】:

    • 谢谢,但仍然无法完美运行。 SignInPage 已关闭,但当我单击后退按钮时,我会返回第一个活动。
    猜你喜欢
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    相关资源
    最近更新 更多