Java 一次性欢迎屏幕不工作
因此,我想通过在另一篇文章中找到的答案中使用Java 一次性欢迎屏幕不工作,java,android,sharedpreferences,Java,Android,Sharedpreferences,因此,我想通过在另一篇文章中找到的答案中使用SharedReferences为我的应用程序创建一个一次性的介绍屏幕。起初,代码似乎正常工作,但现在不行。有人能告诉我发生了什么吗 WelcomeActivity.java(启动器活动): Init:final Boolean WelcomeScreenShowed=prefs.getBoolean(showWelcomeScreenString,true); 没错。第一次运行后,将其设为False: putBoolean(showWelcomeSc
SharedReferences
为我的应用程序创建一个一次性的介绍屏幕。起初,代码似乎正常工作,但现在不行。有人能告诉我发生了什么吗
WelcomeActivity.java(启动器活动):
Init:final Boolean WelcomeScreenShowed=prefs.getBoolean(showWelcomeScreenString,true); 没错。第一次运行后,将其设为False: putBoolean(showWelcomeScreenString,false) }它可以工作
public class MainActivity extends AppCompatActivity {
SharedPreferences prefs;
boolean welcomeScreenShown ;
final String showWelcomeScreenString = "showWelcome";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button getStarted = (Button) findViewById(R.id.txt);
prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
welcomeScreenShown = prefs.getBoolean(showWelcomeScreenString, true);
getStarted.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "welcomeScreenShown:"+welcomeScreenShown, Toast.LENGTH_SHORT).show();
System.out.println("welcomeScreenShown:"+welcomeScreenShown);
if (welcomeScreenShown) {
welcomeScreenShown = false;
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(showWelcomeScreenString, false);
editor.apply();
//startActivity(new Intent(MainActivity.this, LoginReliefAccountActivity.class));
} else if(!welcomeScreenShown){
// System.out.println("welcomeScreenShown:"+welcomeScreenShown);
// startActivity(new Intent(MainActivity.this, LoginReliefAccountActivity.class));
}
}
});
}
}好的。我在代码中犯了一个愚蠢的错误。我将
SharedReferences
代码放在OnClickListener中。如果我将其反转,那么如果sharedprefs布尔值为true
,则设置OnClickListener。在清除设置中的数据后是否尝试再次运行应用程序?是的,我已经这样做了。我实际上已将其设置为true,然后在按下按钮后更改为false。它不起作用,所以我试着把它调大,看看它是否能起作用。如果你点击欢迎屏幕上的按钮,它会带你进入登录屏幕。这意味着,如果您重新启动应用程序,它是否直接进入登录?否,如果您直接进入登录活动,请在onCreate中添加以下内容:“WelcomeScreenShowed=prefs.getBoolean(showWelcomeScreenString,true);如果(!WelcomeScreenShowed){startActivity(新意图(WelcomeActivity.this,LoginReliefAccountActivity.class));}'我不确定是(!WelcomeScreenShowed)还是(WelcomeScreenShowed),请检查它
public class WelcomeActivity extends AppCompatActivity {
SharedPreferences prefs;
final String showWelcomeScreenString = "showWelcome";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
Button getStarted = findViewById(R.id.getStartedBtn);
prefs = PreferenceManager.getDefaultSharedPreferences(WelcomeActivity.this);
final Boolean welcomeScreenShown = prefs.getBoolean(showWelcomeScreenString, true);
getStarted.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (welcomeScreenShown) {
startActivity(new Intent(WelcomeActivity.this, LoginReliefAccountActivity.class));
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(showWelcomeScreenString, false);
editor.apply();
} else if(!welcomeScreenShown){
startActivity(new Intent(WelcomeActivity.this, LoginReliefAccountActivity.class));
}
}
});
}
public class MainActivity extends AppCompatActivity {
SharedPreferences prefs;
boolean welcomeScreenShown ;
final String showWelcomeScreenString = "showWelcome";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button getStarted = (Button) findViewById(R.id.txt);
prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
welcomeScreenShown = prefs.getBoolean(showWelcomeScreenString, true);
getStarted.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "welcomeScreenShown:"+welcomeScreenShown, Toast.LENGTH_SHORT).show();
System.out.println("welcomeScreenShown:"+welcomeScreenShown);
if (welcomeScreenShown) {
welcomeScreenShown = false;
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(showWelcomeScreenString, false);
editor.apply();
//startActivity(new Intent(MainActivity.this, LoginReliefAccountActivity.class));
} else if(!welcomeScreenShown){
// System.out.println("welcomeScreenShown:"+welcomeScreenShown);
// startActivity(new Intent(MainActivity.this, LoginReliefAccountActivity.class));
}
}
});
}