mam ten kod:SharedPreferences nie zapisuje wartość
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
}
}
}
ale zawsze jestem coraz zarejestrowany jako „false” kiedy ponownie uruchomić aplikację. Próbowałem go również zatwierdzić na onStop()
i otrzymałem ten sam wynik. Widziałem tutaj inne tematy związane z tym problemem, ale żaden z nich nie miał takiego samego problemu jak ja.
Wszelkie pomysły?
dzięki. To jest SharedPreferences.Editor. Zadziałało. Ale czy możesz mi wyjaśnić, dlaczego? Może dlatego, że kiedy po prostu wzywam metody, może on wywoływać różne "obiekty"? –
Tak, za każdym razem, gdy wywołasz '.edit()', resetuje obiekt edytora, dlatego gdy wywołasz go dla '.commit()', usuwa on wartość logiczną, którą w nim wstawiłeś. – cjk
Możesz jednak wykonać 'settings.edit(). PutBoolean (" zarejestrowany ", true) .commit();' (o ile pamiętam) –