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));
            }
        }
    });
}