gpt4 book ai didi

android - 如何导航回多个屏幕?

转载 作者:行者123 更新时间:2023-11-29 18:42:31 25 4
gpt4 key购买 nike

我一直在尝试新的导航组件,到目前为止一切顺利。但是,当涉及到以下内容时,我遇到了困难。我的问题最好用一个例子来描述,所以让我举一个例子。

我认为这是一个非常常见的场景,应用程序有一个登录屏幕,然后它们将用户转发到主屏幕、仪表板或类似的东西。让我们坚持命名 - LoginScreenHomeScreen

假设应用程序非常简单。它从 LoginScreen 开始,一旦用户登录,他们就会被转发到 HoneScreen。非常简单的应用程序,但提供示例。

现在,如果用户回击,我们如何退出应用程序?到目前为止,它总是将我带到 LoginScreen

进一步发展这个例子。想象一下,在登录屏幕之前有一个欢迎屏幕,用户可以在其中决定登录或注册。在这种情况下,如何处理返回导航?

本质上,我想问的是导航组件中是否有内置功能可以让您返回多个屏幕,如果没有,有没有办法实现这一点?非常感谢。

最佳答案

@弗雷德

为此,您可以在开始另一项 Activity 后完成每项 Activity 。例如 WelcomeScreen 调用了 LoginScreen 你可以直接完成它,当 LoginScreen 调用 HomeScreen 完成 LoginScreen 因此,当用户从 HomeScreen 返回时,所有 Activity 都将关闭。

或者,您可以从当前 Activity 调用 System.exit(0) 退出应用程序。这适用于您有很多 Activity ,但如果您有一个 Activity ,则与 finish()

没有区别

另一种情况如您在评论中所述:假设您有以下 Activity :ActivityAActivityBActivityC,并且您想从 返回到 ActivityA >ActivityC 而不经过 ActivityB。如果您的 ActivityA 之前已打开,您可以将其返回到前面,具体取决于您希望何时完成。在我们的示例中,我们考虑 Activity 何时结束:

    @Override
protected void onDestroy() {
super.onDestroy();

//this will bring the ActivityA on the front

Intent intent=new Intent(this,ActivityA.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

}

或者您可能有一个不同的场景,其中 LoginActivity 仅在尚未连接时启动,否则您直接转到 HomeScreen。在本例中,我创建了一个Singleton 来帮助我注册当前的调用 Activity ,以便我可以知道在成功登录后将直接启动哪个 Activity 。

例如:

if(sharedPreferences!=null) {
if (sharedPreferences.getBoolean("user_connected",false)){
startActivity(new Intent(this, HomeScreen.class));}
else
{
MySingleton.getInstance().setCurrentCallingActivity("HomeScreen");
startActivity(new Intent(this, LoginActivity.class));
}
}

LoginActivity 中,成功登录后,我执行以下操作:

 try
{
startActivity(new Intent(this,
getClassLoader().loadClass(MySingleton.getInstance().getCurrentCallingActivity())));
finish();
}catch (ClassNotFoundException e)
{
//your code
finish();
}

我就是这样处理的,而且很管用。看你有没有对应的场景试试能不能行。不同的方法可能共存,这远非高效。

关于android - 如何导航回多个屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52800247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com