我正在使用MainActivity启动我的应用程序。在此MainActivity中,我检查应用程序是否第一次启动..如果应用程序第一次启动,它应该启动WelcomeActivity。如果应用程序第一次启动LoginActivity时没有启动..
这是我的MainActivity的代码
// First start - show welcome activity
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
boolean firstStart = sp.getBoolean("configured", false);
Log.d("MainActivity", "First:" + String.valueOf(firstStart));
if (!firstStart) {
// starts the WelcomeActivity
Log.d("MainActivity", "starting WelcomeActivity");
Intent intent = new Intent(this, WelcomeActivity.class);
startActivity(intent);
finish();
}
// account protected?
//long accountId = sp.getLong("accountId", 0);
long accountId = 0;
if (accountId == 0 || !UserManagement.checkAccountProtected(accountId, this)) {
// Show Login
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
finish();
}
现在..我的问题是我看到了WelcomeActivity,并在下一刻登录了LoginActivity ..有人可以告诉我为什么吗?
对我的英语感到抱歉......;)
PS:在其他两项活动中,我只展示了一些输入字段..
THX
答案 0 :(得分:1)
首次启动后需要将cofigured设置为true作为布尔值 就像这样:
修改
// First start - show welcome activity
boolean firstStart = sp.getBoolean("configured", false);
Log.d("MainActivity", "First:" + String.valueOf(firstStart));
if (!firstStart) {
// starts the WelcomeActivity
Log.d("MainActivity", "starting WelcomeActivity");
Intent intent = new Intent(this, WelcomeActivity.class);
startActivity(intent);
finish();
}else {
PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean("configured",true).apply();
// account protected?
//long accountId = sp.getLong("accountId", 0);
long accountId = 0;
if (accountId == 0 || !UserManagement.checkAccountProtected(accountId, this)) {
// Show Login
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
finish();
}
}
答案 1 :(得分:0)
要使一切正常,您不仅需要检查configured
,还需要设置。因此,在WelcomeActivity
完成后,如果应设置configured
,那么下次启动应用时,可以跳过欢迎