gpt4 book ai didi

android - 如果我递归调用 startActivityForResult() 会发生什么?

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

我打算向用户显示四个欢迎屏幕,新用户只显示一次。为此,我在启动时在首选项中保存了一个标志,并检查其值以确定用户是否是新用户。如果没有,则不会出现欢迎屏幕:

SharedPreferences mPrefs;
final String welcomePref = "oldUser";
@Override
public void onCreate(Bundle savedInstanceState) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
Boolean welcome = mPrefs.getBoolean(welcomePref, false);

if (!welcome) {
Intent intent = new Intent(this, welcomeScreenOne.class);
startActivity(intent); //start the first welcome screen

SharedPreferences.Editor editor = mPrefs.edit();
editor.putBoolean(welcomePref, true); //not a new user anymore
editor.commit();
}

}

welcomeScreenOne Activity 启动第二个欢迎屏幕等。您可能已经注意到,此代码中的错误是,如果用户查看第一个欢迎屏幕,则 pref 设置为 true,因此如果他在查看另一个欢迎屏幕(2、3 和 4)之前退出应用程序,则返回应用程序将不会显示剩余的屏幕。

为了解决这个问题,我想到了在每个欢迎屏幕 Activity 中使用 startActivityForResult(Intent, int),这样第 4 个返回到第 3 个,第 3 个返回到第 2 个,第 2 个返回到第一个欢迎屏幕,然后将 pref 设置为 true。这是糟糕的编码习惯吗?

我的第二个解决方案是从主屏幕调用第一个屏幕,返回然后调用第二个屏幕,返回然后调用第三个屏幕,依此类推。

也许有什么方法我不知道,请指教?

最佳答案

Is this bad coding practice?

恕我直言,是的。

Maybe there is a way I do not know of, please advise?

进行一项 Activity ,而不是四项。

在您的欢迎屏幕序列中使用此 Activity 中的其他内容,例如:

关于android - 如果我递归调用 startActivityForResult() 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50918128/

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