Хранить и получать значение на Android

1

Я хочу сохранить значение String на Android и иметь доступ к этой строке каждый раз, когда приложение запускается.

Например, значение String будет иметь имя пользователя, которое он создал самостоятельно. И после перезапуска приложения он будет иметь это имя уже сверху. Как печенье или что-то в этом роде. Как сохранить такой файл в памяти Android?

Может ли кто-нибудь меня вести?

Я использовал:

public class Login extends Activity
{
String user = null;

public String saveUserOnAndroid()
{
    SharedPreferences myPrefs = getApplicationContext().getSharedPreferences("myPrefs", 0);

    String savedUser = myPrefs.getString("user", null);

    if(savedUser == null)
    {
        user = UUID.randomUUID().toString();
        String hashedUser = md5(user);
        SharedPreferences.Editor myPrefsEditor = myPrefs.edit();

        myPrefsEditor.putString("user", hashedUser);
        myPrefsEditor.commit();

        return hashedUser;
    }   
    else
        return savedUser;
}

и это, кажется, не работает хорошо.

  • 0
    Перед публикацией такого вопроса проверьте, чтобы он не был задан.
  • 0
    Вы должны быть более конкретными на то, что вы хотите. ПОЧЕМУ «не работает плохо для вас?» Нам нужно больше информации.
Показать ещё 7 комментариев
Теги:
sharedpreferences

3 ответа

1
Лучший ответ

Ну, вы не упомянули, что вы вызываете метод saveUserOnAndroid() из другого класса. В этом случае:

public String saveUserOnAndroid(Context c) {
  SharedPreferences myPrefs = c.getSharedPreferences("myPrefs", 0);
  String savedUser = myPrefs.getString("user", null);

  if(savedUser == null) {
    user = UUID.randomUUID().toString();
    String hashedUser = md5(user);
    SharedPreferences.Editor myPrefsEditor = myPrefs.edit();

    myPrefsEditor.putString("user", hashedUser);
    myPrefsEditor.commit();

    return hashedUser;
  } else {
    return savedUser;
  }
}

И когда вы вызываете этот метод, не забудьте предоставить ему необходимый Context и вы должны быть в порядке.

  • 0
    Да, конечно, только что сделал это. У меня нет метода onCreate (), потому что я вызываю этот метод saveUserOnAndroid () из другого класса, это может быть причиной?
  • 0
    @karas Смотрите мой обновленный ответ.
Показать ещё 2 комментария
0

Существует несколько вариантов, описанных здесь. Я рекомендую использовать SharedPreferences.

  • 0
    Разве OP уже не использует SharedPreferences ?
  • 0
    Я использую SharedPreferences, но я не могу получить сохраненную информацию.
0

Вы должны это сделать:

public static final String mypref="mypref";
public static String Username="";

@Override
public void OnCreate(Bundle ic){
super.OnCreate(ic);
setContentView(R.layout.main);
SharedPreference sh = getSharedPreference(mypref, 0);
Username = sh.getString("User", Username);
}

public void onPause(){
super.onPause();
SharedPreference sh = getSharedPreference(mypref, 0);
SharedPreference.Editor editor = sh.edit();
editor.putString("User", Username);
}
  • 0
    попробуете это решение onPause вызывается после закрытия API?
  • 0
    да перейдите по этой ссылке: cse.spsu.edu/jpreston/CGDD4203/images/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню