Получить данные с помощью SharedPreferences - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь получить данные (имя, адрес электронной почты, пароль) от пользователя, а затем сохранить их с помощью SharedPreferences.Во втором занятии я хочу получить данные (только электронная почта и пароль), а затем установить их в editText.Вот мой кодМои данные не отображаются, и я не знаю, где проблема.

Мой код: -

Первое действие

EditText username  , userpassword , useremail ;

SharedPreferences sharedPreferences ;


static final String Email = "Email";
static final String Username = "Username";
static final String Password = "Password";

  public void RegisterrButton(View view){

    username = findViewById(R.id.username_editText);
    userpassword = findViewById(R.id.pasword_editText);
    useremail = findViewById(R.id.email_editText);

    String name = username.getText().toString();
    String password = userpassword.getText().toString();
    String email  = useremail.getText().toString();

    SharedPreferences.Editor editor = sharedPreferences.edit();

    editor.putString(Username , name);
    editor.putString(Password , password);
    editor.putString(Email,email);
    editor.commit();


    Intent intent = new Intent(signup.this,MainActivity.class);
    startActivity(intent);


}

Второе действие

SharedPreferences sharedPreferences;

static final String prefrence = "prefrence";

static final String Email = "Email";
static final String Password = "Password";

EditText useremail  , userpassword ;

 public void EnterButton(View view){

        useremail = findViewById(R.id.useremail_editText);
        userpassword = findViewById(R.id.pasword_editText);


        sharedPreferences = getSharedPreferences(prefrence , Context.MODE_PRIVATE) ;

        if(sharedPreferences.contains(Email) ){

            useremail.setText(sharedPreferences.getString(Email , ""));}


        if(sharedPreferences.contains(Password)){

            userpassword.setText(sharedPreferences.getString(Password , ""));

        }

 } 

Ответы [ 4 ]

0 голосов
/ 20 ноября 2018

В первом упражнении вы не инициализируете sharedPreference Для инициализации выполните это

sharedPreferences = getSharedPreferences(prefrence , Context.MODE_PRIVATE);

Рассмотрите возможность применения apply ().

Записывает изменения в ОЗУнемедленно и ждет и записывает его во внутреннее хранилище (файл фактических настроек) после.Коммит записывает изменения синхронно и напрямую в файл.

0 голосов
/ 20 ноября 2018

Замените следующий код в MainActivity:

SharedPreferences.Editor editor = sharedPreferences.edit();

На

public static final String MY_PREFS_NAME = "prefrence";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();

Используйте ту же переменную MY_PREFS_NAME, чтобы получить информацию во втором вашем действии:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
0 голосов
/ 20 ноября 2018

Создайте свою функцию и попробуйте это:

   public void saveText(String key, String value) {
        SharedPreferences sPref = context.getSharedPreferences(config.PREFERENCES, context.MODE_PRIVATE);
        SharedPreferences.Editor ed = sPref.edit();
        ed.putString(key, value);
        ed.commit();
        ed.apply();
        toast("Yatda saklandy");
    }

    public String loadText(String key) {
        SharedPreferences sPref = context.getSharedPreferences(config.PREFERENCES, context.MODE_PRIVATE);
        String savedText = sPref.getString(key, "");
        return savedText;
    }

и используйте ее:

saveText("name",username.getText().toString());

loadText("name");
0 голосов
/ 20 ноября 2018

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

    SharedPreferences preference = context.getSharedPreferences(<SAME_PREFERENCE_NAME>,Context.MODE_PRIVATE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...