Spinner Sélection - Enregistrer pour SharedPreferences, puis les Récupérer
Im en utilisant le "SharedPreferences" dans mon application afin de conserver la possibilité de sauvegarder/récupérer les valeurs de chaîne à partir de plusieurs edittext boîtes, et c'est ce qui fonctionne très bien. J'ai aussi un Spinner dans mon activité avec un string-array pour des valeurs utilisables. Mais je suis pas clair sur la façon d'écrire les fileuses de sélection pour les SharedPreferences, puis de lire les SharedPreferences plus tard pour récupérez et définir sa valeur.
Voici la configuration que j'ai pour l'edittext:
-Bouton pour activer enregistrer les valeurs de SharedPreferences-
public void buttonSaveSendClick(View view) {
SharedPreferences.Editor editor = getPreferences(0).edit();
EditText editTextCallId = (EditText) findViewById(R.id.editTextCallId);
editor.putString("editTextCallIdtext", editTextCallId.getText().toString());
editor.putInt("selection-startCallId", editTextCallId.getSelectionStart());
editor.putInt("selection-endCallId", editTextCallId.getSelectionEnd());
editor.commit();
}
-Bouton pour activer la restauration dernières valeurs enregistrées à partir SharedPreferences-
public void buttonRestoreLastClick(View view) {
SharedPreferences prefs = getPreferences(0);
EditText editTextCallId = (EditText) findViewById(R.id.editTextCallId);
String editTextCallIdtextrestored = prefs.getString("editTextCallIdtext", null);
editTextCallId.setText(editTextCallIdtextrestored, EditText.BufferType.EDITABLE);
int selectionStartCallId = prefs.getInt("selection-startCallId", -1);
int selectionEndCallId = prefs.getInt("selection-endCallId", -1);
editTextCallId.setSelection(selectionStartCallId, selectionEndCallId);
}
Des suggestions sur la façon de construire la collection de la casserole de la valeur sélectionnée dans le premier bouton (enregistrer)? Alors comment retourner que la valeur enregistrée pour les fileuses vue sur appuyez sur le bouton "restaurer"?
OriginalL'auteur Devin | 2011-02-21
Vous devez vous connecter pour publier un commentaire.
Vous appelez l'éditeur.commit() une fois après tout de votre éditeur.put() consolidés. Sinon, toutes les modifications que vous avez apportées aux préférences de se jeter. En supposant que les éléments de votre tableau ne sera pas de changer de position à tous, alors vous pouvez simplement stocker la position sélectionnée comme un int dans vos préférences.
à Enregistrer:
à Charge:
Si les éléments de votre tableau va changer, alors vous aurez à stocker la chaîne réelle, au lieu de la position. Quelque chose de ce genre:
et
trouver la position de la chaîne en boucle dans votre tableau et la vérification de tableau[i] à l'encontre de la valeur stockée dans les prefs. Appelez ensuite spinner.setSelected(position). Si vous utilisez une liste de tableaux plutôt que cette partie pourrait être fait sans la boucle en appelant
ArrayList.indexOf(prefs.getString("spinnerSelection", ""));
Être conscient que seuls les ArrayList n'ont une méthode indexOf. Sur un simple Tableau, vous ne pouvez pas utiliser la méthode indexOf (), vous devrez rechercher manuellement votre Tableau pour trouver la bonne valeur.
OriginalL'auteur FoamyGuy