如何在非起始目的地按返回键退出应用程序?

8
假设我有一个类似于这样的导航图:

---------      ---------
| Home  | ---->| Other |
---------      ---------
    |
    |
    V
---------
| Login |
---------

如果用户未登录,我需要在其继续操作之前显示登录界面。根据文档,我在HomeFragment中检查用户是否已登录。如果没有登录,则打开LoginFragment。到此为止,一切都很好。
但是如果用户在LoginFragment中按下返回键,我想让应用程序退出。但是由于LoginFragment不是起始目的地,它将简单地打开HomeFragment,然后再次打开LoginFragment
目前,我通过在承载Activity中重写onBackPressed()并在当前目的地为LoginFragmentfinish()Activity来退出应用程序。
但这种方法感觉有些hackish。我想这肯定是一个非常普遍的导航场景。那么,有没有什么“惯用”的方法来做到这一点?

2
我之前也使用了 onBackPressed 在登录页上的一个应用程序中,使用和你现在做的方式一样,来有效地“困住”用户在登录页上,如果他碰巧到达那里。我不介意你目前正在做的事情。 - Tim Biegeleisen
使用一个 Activity 并为登录和其他事项设置片段,这样当 onBackPressed() 被调用并显示登录片段时,您只需要 finish() 主页 Activity。 - TheWanderer
在这种情况下,您正在使用的实现是正确的。 - 113408
您可以更改片段而不将其添加到后退堆栈,实现您想要的行为。 - Dan Harms
1个回答

6

我认为最简单(也是最合适)的方法解决你的问题,就是在从主页 -> 登录的操作中使用app:popUpToapp:popUpToInclusive

这是一个相关的示例,当您从闪屏到主屏幕时,您不希望用户按“返回”按钮时返回到闪屏画面。

enter image description here


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