Приложение продолжает забывать sharedpreferences при перезапуске
Я больше не знаю, что с ним делать
кажется, работает нормально с android 3.0 и выше, но на android 2.3.3 каждый раз, когда я запускаю приложение, оно снова запрашивает имя пользователя/пароль.
Я использую общие настройки.
вот как я сохраняю настройки:
SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("username", username).commit();
editor.putString("password", password).commit();
и вот как я их читаю:
SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", Context.MODE_PRIVATE);
String username = preferences.getString("username", "");
String password = preferences.getString("password", "");
Я пытался сохранить настройки, используя этот код:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
SharedPreferences.Editor editor = preferences.edit();
editor.putString("username", username).commit();
editor.putString("password", password).commit();
и прочтите их с помощью этого кода:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
String username = preferences.getString("username", "");
String password = preferences.getString("password", "");
но это не работает.
проблема в том, что перед перезапуском приложения я вижу, что они все еще там. Однако, как только я делаю перезапуск - я в конечном итоге получаю "" (пустую строку) для имени пользователя и "" для пароля.
любые идеи были бы очень признательны
4 ответов
public class MyApplication extends Application {
private static MyApplication instance;
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "onCreate() called");
}
public MyApplication() {
super();
Log.d(TAG, "Constructor called");
instance = this;
}
public static MyApplication getApplication() {
if (instance == null) {
instance = new MyApplication();
}
return instance;
}
}
и использование:
MyApplication.getApplication().getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE)
попробуйте это:
SharedPreferences preferences = context.getSharedPreferences("YOUR_TAG", 0);
String username = preferences.getString("username", "");
String password = preferences.getString("password", "");
SharedPreferences.Editor editor = preferences.edit();
editor.putString("username", username).commit();
editor.putString("password", password).commit();
где контекст-это контекст приложения:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
Я не знаю точно, что произошло, но после перезапуска эмулятора проблема исчезла.
Извините, что трачу ваше время
у вас есть 2 варианта:
получить общее значение предпочтения в течение жизненного цикла деятельности.
вызов
.clear
до.commit
смотрите мой ответ:
Android постоянное проверяемое меню в пользовательском виджете после перезагрузки Android