2015-06-09 6 views
-2

это моя логика:Сохранить пользователя и пароль Android

У меня есть пользователь:

user = new User(newUsername, newPassword); 

Random ID + пароль генерируемый для пользователя.

uniqueName = UUID.randomUUID().toString(); 
uniquePassword = UUID.randomUUID().toString(); 

С помощью диалогового окна пользователь может изменить свой пароль, что происходит следующим образом.

newUsername = userField.getText().toString(); 
newPassword = passwordField.getText().toString(); 

я прохожу его к модели:

user.setUsername(newUsername); 
user.setPassword(newPassword); 

Модель выглядит следующим образом:

public User(String username,String password){ 
    this.username = username; 
    this.password = password; 
} 

public String getUsername(){ 
    return username; 
} 

public void setUsername(String username){ 
    this.username = username; 
} 

public String getPassword(){ 
    return password; 
} 

public void setPassword(String password){ 
    this.password = password; 
} 

Однако, когда я закрыл приложение или изменить Активности пароль и пользователь не сохраняется, любой намек на то, как сохранить пользователя и пароль, чтобы при выходе пользователя из системы он сохранял пароль/идентификатор?

Я добавил SharedPreferences следующим образом:

private void savePreferences(){ 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putString(PREF_UNAME, newUsername); 
    editor.putString(PREF_PASSWORD, newPassword); 
    editor.commit(); 
} 

private void loadPreferences(){ 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 
      Context.MODE_PRIVATE); 

    mUsername.setText(settings.getString(PREF_UNAME, newUsername)); 
    mPassword.setText(settings.getString(PREF_PASSWORD, newPassword)); 

} 

я называю savePreferences в OnPause() и loadPreferences в onResume(). Однако, когда я закрываю действие два раза и снова открываю его, имя пользователя и идентификатор i исчезают. Есть еще намеки?

+0

Может быть, сохранить его в БД SQLite? – Dragondraikk

ответ

0

Поскольку вы сохраняете пользователя в памяти, и вам нужно сохранить его в SharedPreference.

1

Причина, по которой вы не получаете значение, - это ваши данные, которые не хранятся. Как только приложение будет закрыто, ваши статические данные будут потеряны. Вам необходимо сохранить данные в базе данных или в SharedPreference.

Ваша модель - это всего лишь статический метод, экономящий данные временно.

0

Все зависит от того, сколько данных это (кроме идентификатора пользователя и пароля)

Как @Gosu сказал, что если у вас есть небольшие данные использовать SharedPrefereces или, если есть большее количество recrods и таблиц затем использовать SQLite

Для более см это: Official Site : Android Storage Options

0

Если ограничение только имя пользователя и пароль (не пользовательские роли & разрешений) Тогда лучший способ без особого труда является SharedPreferences. Кроме того, вам нужна база данных, например, sqlite.

+0

Я добавил его в редактирование, все еще получил небольшую проблему, не могли бы вы проверить его? –

0

Вы можете использовать сохраненное предпочтение для сохранения пользователя. Мы можем сделать это с помощью gson.jar

SharedPreferences mPrefs = getPreferences(MODE_PRIVATE); 

Для сохранения

Editor prefsEditor = mPrefs.edit(); 
Gson gson = new Gson(); 
String json = gson.toJson("User"); 
prefsEditor.putString("MyObject", json); 
prefsEditor.commit(); 

Для получения

Gson gson = new Gson(); 
String json = mPrefs.getString("User", ""); 
MyObject obj = gson.fromJson(json, User.class); 
Смежные вопросы