我有一个 Activity ,我只想在第一次运行应用程序时运行。我检查了一个指定的共享首选项,它返回一个 bool 值。如果它返回 true,它将被启动,并将被设置为 false,以便下次打开应用程序时它不会运行。但是我的实现出错了。每次我打开 BeforMain1 Activity 都会打开。有人可以建议我的代码有什么问题吗?

sharedPreferences = getSharedPreferences("ShaPreferences", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor=sharedPreferences.edit();
            boolean  firstTime=sharedPreferences.getBoolean("first", true);
            if(firstTime) {
                editor.putBoolean("first",false);
                Intent intent = new Intent(SplashScreen.this, BeforeMain1.class);
                startActivity(intent);
            }
            else
            {
                Intent intent = new Intent(SplashScreen.this, MainActivity.class);
                startActivity(intent);
            }

最佳答案

您忘记提交 SharedPreferences 更改,

if(firstTime) {
      editor.putBoolean("first",false);
      //For commit the changes, Use either editor.commit(); or  editor.apply();.
      editor.commit();  or  editor.apply();
      Intent intent = new Intent(SplashScreen.this, BeforeMain1.class);
      startActivity(intent);
}else {
      Intent intent = new Intent(SplashScreen.this, MainActivity.class);
      startActivity(intent);
}

关于android - SharedPreference 未按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33455355/

10-12 04:20