Android 如果我递归调用startActivityForResult(),会发生什么?
我打算向用户显示四个欢迎屏幕,新用户只显示一次。为此,我在启动时在首选项中保存一个标志,并检查其值以确定用户是否是新用户。如果不是,则不显示欢迎屏幕:Android 如果我递归调用startActivityForResult(),会发生什么?,android,Android,我打算向用户显示四个欢迎屏幕,新用户只显示一次。为此,我在启动时在首选项中保存一个标志,并检查其值以确定用户是否是新用户。如果不是,则不显示欢迎屏幕: SharedPreferences mPrefs; final String welcomePref = "oldUser"; @Override public void onCreate(Bundle savedInstanceState) { mPrefs = PreferenceManager.getDefaultSharedPre
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活动启动第二个欢迎屏幕,依此类推。
正如您可能已经注意到的,此代码中的错误是,如果用户查看第一个欢迎屏幕,pref设置为true,因此如果他在查看其他欢迎屏幕(2、3和4)之前退出应用程序,则返回应用程序将不会显示其余屏幕
为了解决这个问题,我想到在每个欢迎屏幕活动中使用startActivityForResult(Intent,int)
,以便第四个返回到第三个,第二个返回到第一个欢迎屏幕,然后将pref设置为true
。这是一种糟糕的编码实践吗
我的第二个解决方案是从主屏幕调用第一个屏幕,返回然后调用第二个屏幕,返回然后调用第三个屏幕,依此类推
也许有一种方法我不知道,请建议
这是一种糟糕的编码实践吗
嗯,是的
也许有一种方法我不知道,请建议
有一项活动,而不是四项
在这一活动中为您的欢迎屏幕序列使用其他内容,例如:
- 四个碎片,一次显示一个
- 四个视图,一次显示一个
- 用于此类欢迎屏幕的现有库,如或