sharedpreferences, почему не возвращает никаких значений - PullRequest
0 голосов
/ 23 октября 2018

Я использую sharedPrefrence в своем приложении, но он не возвращает никакого значения, это код:

 public class SharedPrefManager {
    public final String MY_PREFS_NAME = "name";
    private Context context;
    SharedPreferences sp;
    public SharedPrefManager(Context context){
        this.context = context;
        sp = context.getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        Log.d(TAG, "database is created");
    }

    public void saveInfoUser(String username ,int numRow){
        SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
        editor.putString("username", username);
        editor.putInt("numberRow",numRow);
        editor.commit();
    }


    public String getUsename(){


        String username = sp.getString("username","");
        return username;
    }
    public void logout(){
        sp.edit().clear().commit();
    }

}

, но когда вызывается метод getUsename() return "", а не возвращаются значения

этоместо вызываемого метода: введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Важнейшая часть кода:

SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit();

Эта строка кода должна быть такой:

    SharedPreferences.Editor editor = sp.edit();

Как только вы получите объект SharedPreferences в конструкторе классаВы должны использовать его для создания редактора.

 public class SharedPrefManager {
    public final String MY_PREFS_NAME = "name";
    private final String MY_PREFS_USERNAME = "username";
    private final String MY_PREFS_NUMBER_ROW = "numberRow";

    SharedPreferences sp;

    public SharedPrefManager(Context context){
        sp = context.getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        Log.d(TAG, "database is created");
    }

    public void saveInfoUser(String username ,int numRow){
        SharedPreferences.Editor editor = sp.edit();
        editor.putString(MY_PREFS_USERNAME , username);
        editor.putInt(MY_PREFS_NUMBER_ROW ,numRow);
        editor.commit();
    }


    public String getUsename(){
        String username = sp.getString(MY_PREFS_USERNAME ,"");
        return username;
    }
    public void logout(){
        sp.edit().clear().commit();
    }

}
0 голосов
/ 23 октября 2018

Убедитесь, что вы используете те же общие предпочтения для сохранения, что и при извлечении.

При чтении используется личный общий префикс с ключом MY_PREFS_NAME

, но при записи используется общий префикс по умолчанию снет ключа.

enter image description here

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