J'essaie d'obtenir des données (nom, e-mail, mot de passe) de l'utilisateur, puis de les enregistrer à l'aide de SharedPreferences. Dans la deuxième activité, je veux récupérer les données (uniquement e-mail et mot de passe), puis les définir dans editText. Voici mon code. Mes données ne s'affichent pas et je ne sais pas où est le problème.

Mon code: -

Première activité

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);


}

Deuxième activité

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 , ""));

        }

 } 
0
user10612521 20 nov. 2018 à 21:10

4 réponses

Meilleure réponse

Remplacez le code suivant dans MainActivity:

SharedPreferences.Editor editor = sharedPreferences.edit();

Avec

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

Utilisez la même variable MY_PREFS_NAME pour obtenir les informations de votre deuxième activité:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
0
Nero 20 nov. 2018 à 18:24

Créez votre fonction et essayez ceci:

   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;
    }

Et l'utiliser:

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

loadText("name");
0
Mkurbanov 20 nov. 2018 à 18:30

Lors de votre première activité, vous n'initialisez pas sharedPreference Pour initialiser, procédez comme suit

sharedPreferences = getSharedPreferences(prefrence , Context.MODE_PRIVATE);

Pensez à utiliser apply ().

Il écrit les modifications dans la RAM immédiatement et attend et les écrit dans le stockage interne (le fichier de préférences réel) après. Commit écrit les modifications de manière synchrone et directement dans le fichier.

0
Lekr0 20 nov. 2018 à 18:49

Assurez-vous que vous utilisez le même nom de préférence partagée au moment de la persistance et de la lecture des valeurs.

    SharedPreferences preference = context.getSharedPreferences(<SAME_PREFERENCE_NAME>,Context.MODE_PRIVATE);
0
Ramesh Yankati 20 nov. 2018 à 18:21