我有这段代码:
public class Register extends Activity {
private LinearLayout layout;
private TextView debug;
public static final String USER_CONFIG = "UserConfigs";
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
SharedPreferences settings = getSharedPreferences(USER_CONFIG, MODE_PRIVATE);
boolean registered = settings.getBoolean("registered", false);
layout = (LinearLayout) findViewById(R.id.layoutRegister);
if (!registered) {
debug = new TextView(this);
debug.setText("You have to register");
layout.addView (debug);
//TO DO user registration
settings.edit().putBoolean("registered", true);
settings.edit().commit();
} else {
debug = new TextView(this);
debug.setText("You have already registered");
layout.addView (debug);
//TO DO skip to next screen
}
}
}
当我重新启动我的应用程序时,我总是以"false"的身份注册。我已经尝试在onStop()
上提交它,但得到了相同的结果。我在这里看到了其他与此问题相关的主题,但没有一个像我这样有同样的问题。
有什么想法吗?
.edit()
时都会重置编辑器对象,因此当您为.commit()
调用它时,它会清除您放入其中的布尔值。 - cjksettings.edit().putBoolean("registered", true).commit();
(据我所记) - Martin Marconciniapply()
而是使用commit()
? - IgorGanapolsky