2017-07-29 5 views
0

Je crée un tracker de présence pour un camp d'été, où les conseillers peuvent saisir l'heure à laquelle leur campeur s'est connecté en tapant editText et en appuyant sur le bouton de sauvegarde. Cette chaîne de base doit être enregistrée dans une zone de texte et chargée sur l'écran chaque fois que l'application est chargée. Il y a plusieurs cases comme celle-ci pour que les conseillers puissent savoir à quelle heure chaque étudiant est entré/sorti chaque jour.Préférences partagées apparaissant à l'écran

J'ai utilisé sharedPreferences pour enregistrer l'entrée du conseiller lorsqu'un bouton est enfoncé, puis l'afficher en utilisant un autre bouton. Cependant, JE NE PEUX PAS OBTENIR LE TEXTE POUR APPARAITRE SUR L'ECRAN LORSQUE JE FERME ET REOUVRIR L'APP. Mon code manque-t-il quelque chose ??

public class AttendancePage extends AppCompatActivity { 

EditText mondayMorn; 
TextView displayMonMorn; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_attendance_page); 
    String counsellorName = getIntent().getStringExtra("Senior Counsellor Name"); 

    TextView tv = (TextView)findViewById(R.id.counsellorName); 
    tv.setText(counsellorName + "'s"); 

    mondayMorn = (EditText) findViewById(R.id.editText37); 
    displayMonMorn = (TextView) findViewById(R.id.displayMonMorn); 
} 

public void saveInput (View view) { 
    SharedPreferences checkInMon = getSharedPreferences("LoginTime", Context.MODE_PRIVATE); 

    SharedPreferences.Editor editor = checkInMon.edit(); 
    editor.putString("mondayIn", mondayMorn.getText().toString()); 
    editor.apply(); 

    Toast.makeText(this, "Saved", Toast.LENGTH_LONG).show(); 
} 

public void updateSettings (View view){ 
    SharedPreferences checkInMon = getSharedPreferences("LoginTime", Context.MODE_PRIVATE); 

    String time = checkInMon.getString("mondayIn", ""); 

    displayMonMorn.setText(time); 
} 
+0

Essayez d'utiliser la méthode commit() pour enregistrer le fichier de préférences partagées. – Popeye

+0

Où appelez-vous 'saveInput (...)'? Puisque vous n'utilisez évidemment pas la bibliothèque de liaison de données et qu'elle ne figure pas dans votre code, êtes-vous sûr que l'écouteur de clic est correctement défini? –

+0

Vous avez raison, je ne l'ai pas réglé correctement. Encore une fois, comme je l'ai dit, mes informations sont sauvegardées dans sharedPreferences mais ne restent pas affichées une fois l'application fermée. – user8384402

Répondre

0

Remplacer:

SharedPreferences.Editor editor = checkInMon.edit(); 
editor.putString("mondayIn", mondayMorn.getText().toString()); 
editor.apply(); 

avec:

SharedPreferences.Editor editor = checkInMon.edit(); 
editor.putString("mondayIn", mondayMorn.getText().toString()); 
editor.commit(); 

qui devrait au moins enregistrer les données dans les préférences.

+1

Il n'y a pas de réelle différence entre 'apply()' et 'commit()' autre qu'async et sync, ce qui dans ce cas n'a pas d'importance car le processus ne sera probablement pas tué avant que les données puissent être écrites dans le fichier. stockage permanent. –

+0

vrai ... bon point – TooManyEduardos