2017-08-29 6 views
1

Je souhaite enregistrer l'entrée utilisateur dans SharedPreferences lorsque je clique sur un bouton de sorte que lorsqu'un utilisateur relance l'activité, l'entrée utilisateur soit définie sur EditText et TextView. J'ai déjà créé un fichier SharedPreferences dans lequel j'ai enregistré du texte dans une activité précédente. Je veux mettre à jour le fichier SharedPreferences avec d'autres détails de cette nouvelle activité que j'ai créée.Enregistrer l'entrée utilisateur dans SharedPrefernces et définir la valeur sur EdiText

Ceci est du code pour créer et enregistrer pour SharedPreferences

private SharedPreferences prefs; 
public static final String PREF_FILE_NAME = "AuthUser"; 

prefs = this.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE); 
txtDate = (TextView) findViewById(R.id.txtDate); 

    addIdButton = (Button) findViewById(R.id.btnAddId); 
    addIdButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      expiryDate = txtDate.getText().toString(); 
      edtIdNumber = (EditText) findViewById(R.id.edtIdNumber); 
      idNumber = edtIdNumber.getText().toString(); 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putInt("idType", idType); 
      editor.putString("idNumber", idNumber); 
      editor.putString("expiryDate", expiryDate); 
      editor.apply(); 
     } 
    }); 

Ceci est mon code pour définir la valeur des préférences partagées à EditText et TextView

@Override 
public void onStart(){ 
    super.onStart(); 
    File f = new File(PREF_FILE_NAME); 
    if (f.exists()){ 
     idType = prefs.getInt("idType", 0); 
     idNumber = prefs.getString("idNumber", ""); 
     expiryDate = prefs.getString("expiryDate", ""); 

     edtIdNumber = (EditText) findViewById(R.id.edtIdNumber); 
     txtDate = (TextView) findViewById(R.id.txtDate); 
     txtDate.setText(expiryDate); 
     edtIdNumber.setText(idNumber); 
     edtIdNumber.setText(idNumber); 
     txtDate.setText(expiryDate); 

    } 
} 
+0

utilisez le code onStart() dans O Méthode nCreate .. becoze de vous pouvez trouver edittext après sur create méthode exécuter .... –

+1

Le code semble bien. Quel est le problème auquel vous êtes confronté? Mis à part le réglage du texte pour 'edtIdNumber' 2 fois ce qui est une erreur de copier coller. –

+0

@PCGALIANDROID le problème est que les valeurs ne sont pas enregistrées dans le fichier sharedPreference –

Répondre

1

File f = new File(PREF_FILE_NAME); vient le nom de la préférence donc f.exists() retournera toujours false

Solution: Rem Ove

File f = new File(PREF_FILE_NAME); 
if (f.exists()){ 

parce que si vous n'avez aucune valeur alors il suffit d'utiliser la valeur par défaut

@Override 
public void onStart(){ 
    super.onStart(); 
    //File f = new File(PREF_FILE_NAME); // not a right path 
    //if (f.exists()){ // false 
     idType = prefs.getInt("idType", 0); 
     idNumber = prefs.getString("idNumber", ""); 
     expiryDate = prefs.getString("expiryDate", ""); 

     edtIdNumber = (EditText) findViewById(R.id.edtIdNumber); 
     txtDate = (TextView) findViewById(R.id.txtDate); 
     txtDate.setText(expiryDate); 
     edtIdNumber.setText(idNumber); 
     edtIdNumber.setText(idNumber); 
     txtDate.setText(expiryDate); 

    //} 
} 

vous pouvez également utiliser contains

+0

Votre réponse m'a aidé. Merci –

+0

je suis heureux que je pourrais aider, heureux codage –

1

Pour ACHIVE votre travail: Tout d'abord essayer de comprendre la différence entre la méthode onCreate() et la méthode onStart() d'android, suivez l'url suivante: https://developer.android.com/guide/components/activities/activity-lifecycle.html -: utilisez la méthode onCreate() au lieu de onStart() pour définir les variables ui;

changer d'autre part dans votre code comme:

public void onClick(View view) { 
      expiryDate = txtDate.getText().toString(); 
      edtIdNumber = (EditText) findViewById(R.id.edtIdNumber); 
      idNumber = edtIdNumber.getText().toString(); 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putInt("idType", idType); 
      editor.putString("idNumber", idNumber); 
      editor.putString("expiryDate", expiryDate); 
      editor.commit(); 
     } 
+0

cela n'aura aucun effet –

0

supprimer tout if (f.exists()) état de Onstart() parce File f = new File(PREF_FILE_NAME); a juste le nom de la préférence si f.exists() se retourne toujours faux

comme ci-dessous le code

 @Override 
public void onStart(){ 
    super.onStart(); 
    /* File f = new File(PREF_FILE_NAME); 
    if (f.exists()){*/ 
     idType = prefs.getInt("idType", 0); 
     idNumber = prefs.getString("idNumber", ""); 
     expiryDate = prefs.getString("expiryDate", ""); 

     edtIdNumber = (EditText) findViewById(R.id.edtIdNumber); 
     txtDate = (TextView) findViewById(R.id.txtDate); 
     txtDate.setText(expiryDate); 
     edtIdNumber.setText(idNumber); 
     txtDate.setText(expiryDate); 


}