gpt4 book ai didi

android - 循环根据条件开始 Activity

转载 作者:行者123 更新时间:2023-11-29 15:32:00 24 4
gpt4 key购买 nike

我正在尝试编写一个具有两个主要 Activity 的 Android 应用程序:登录屏幕和显示屏幕。目前我正在设置它,以便如果用户已经登录,将跳过登录屏幕。

为了找出最好的方法来做到这一点,我创建了一个通用的“主要” Activity ,看起来像这样:

public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {

// Get preferences
SharedPreferences settings = getSharedPreferences("PREFERENCES", MODE_PRIVATE);

super.onCreate(savedInstanceState);
//setContentView(R.layout.viewusage);

//System.out.println(settings.getBoolean("LOGGEDIN", false));

if (settings.getBoolean("LOGGEDIN", false) == false)
{
Intent intent = new Intent(Main.this, Login.class);
startActivity(intent);
}
else
{
Intent intent = new Intent(Main.this, Display.class);
startActivity(intent);
}

}

}

想法是当有人成功登录时,登录 Activity 将保存用户首选项所需的所有详细信息,然后完成()该 Activity 。这将返回到主要 Activity 。我想要做的是让主要 Activity 在没有任何 Activity 运行时继续循环通过 if ... else 语句:因此当登录页面关闭时,它将重新运行 if ... else 语句,并且应该启动显示 Activity 而不是登录 Activity 。如果用户从 Display 类注销,则情况正好相反。

我曾考虑过使用 while (true) 循环,但这只会挂起程序。我想过把它放在一个单独的线程中,但我不知道如何检测是否已经有另一个 Activity 在运行,所以一个单独的线程只会不断循环并打开新的 Activity (我想,我没试过它)

关于我如何解决这个问题有什么建议吗?

谢谢。

最佳答案

您不能通过在 onCreate 中循环来完成此操作,因为在 onCreate 返回之前 Activity 实际上并没有开始。

一种可能是使用 startActivityForResult 并安排 Login 和 Display Activity 返回一个代码,指示是退出还是继续其他 Activity 。然后,您会将逻辑放在 onActivityResult 中,而不是在 onCreate 中循环。

另一种可能更简洁的方法是将显示 Activity 设计为在用户注销时直接启动登录 Activity ,反之亦然。这样,Main Activity 就可以在确定最初显示哪个 Activity 后调用 finish()

关于android - 循环根据条件开始 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499965/

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